当前位置: 首页 > news >正文

WPF 使用Image控件显示图片

Source属性

Source属性用来告诉Image组件要展示哪张图片资源的一个入口,通常是图片的路径。也许是本地路径,也许是网络路径。

本地图片路径加载方式

使用相对路径,相对于工程目录的路径,当设置Width属性时,图片会等比例按照宽度进行等比例缩放

<Image Source="/Imgs/1.jpg" Width="200"/>

使用pack uri加载图片。使用pack uri可以应用程序依赖的非可执行文件,例如xaml、图像、视频等。wpf支持对数据文件进行配置、识别及使用。可以轻松引用应用程序中包含的资源。

<Image Name="img1" Source="pack://application:,,,/imgs/2.jpg" Width="100" HorizontalAlignment="Left"/> 

绝对Pack URI
文件路径 绝对 pack URI
资源文件 — 本地程序集 “pack://application:,/ResourceFile.xaml”
子文件夹中的资源文件 — 本地程序集 “pack://application:,/Subfolder/ResourceFile.xaml”
资源文件 — 所引用的程序集 “pack://application:,/ReferencedAssembly;component/ResourceFile.xaml”
所引用的程序集的子文件夹中的资源文件 “pack://application:,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml”
所引用的版本化程序集中的资源文件 “pack://application:,/ReferencedAssembly;v1.0.0.0;component/ResourceFile.xaml”
内容文件
“pack://application:,/ContentFile.xaml”

子文件夹中的内容文件 “pack://application:,/Subfolder/ContentFile.xaml”
源站点文件 “pack://siteoforigin:,/SOOFile.xaml”
子文件夹中的源站点文件 “pack://siteoforigin:,/Subfolder/SOOFile.xaml”
相对 Pack URI
文件 相对 pack URI
本地程序集中的资源文件 “/ResourceFile.xaml”
本地程序集的子文件夹中的资源文件 “/Subfolder/ResourceFile.xaml”
所引用的程序集中的资源文件 “/ReferencedAssembly;component/ResourceFile.xaml”
所引用的程序集的子文件夹中的资源文件 “/ReferencedAssembly;component/Subfolder/ResourceFile.xaml”
内容文件 “/ContentFile.xaml”
子文件夹中的内容文件 “/Subfolder/ContentFile.xaml”
后台加载Pack URI的方式如下:

Uri resourceUri = new Uri("/Imgs/1.jpg", UriKind.Relative);
this.Pic1.Source = new BitmapImage(resourceUri); 
Uri resourceUri1 = new Uri("pack://application:,,,/imgs/2.jpg", UriKind.Absolute);
this.Pic2.Source = new BitmapImage(resourceUri1);
<Window x:Class="WPF002_Image.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WPF002_Image"mc:Ignorable="d"Title="MainWindow" Height="600" Width="1000"><StackPanel><!--Source属性的值为相对工程根目录的文件夹--><!--<Image Source="/Imgs/1.jpg"/>--><!--当设置图片的宽度但未设置图片的高度的时候,图片的高为以原图片的宽高比进行等比计算--><Image Source="/Imgs/1.jpg" Width="200"/><Image Name="img1" Source="pack://application:,,,/imgs/2.jpg" Width="100" HorizontalAlignment="Left"/><Image Source="https://inews.gtimg.com/newsapp_bt/0/12171811596_909/0" Width="100"/><WrapPanel><Image x:Name="Pic1" Width="200"/><Image x:Name="Pic2" Width="200" /></WrapPanel><Label Content="Strtch属性" FontSize="30" HorizontalAlignment="Center"/><Image /><WrapPanel><!--None: 如果图片小于图片控件,则不执行任何操作。如果它比图片控件大,则会裁剪图片以适合图片控件,这意味着只有部分图片可见。--><Image Source="/Imgs/1.jpg" Width="200" Stretch="None"/><!--Fill: 图片将缩放以适合图片控件的区域。可能无法保留宽高比,因为图片的高度和宽度是独立缩放的。--><Image Source="/Imgs/1.jpg" Width="200" Stretch="Fill"/><!--Uniform: 这是默认模式。图片将自动缩放,以便它适合图片区域。将保留图片的宽高比。--><Image Source="/Imgs/1.jpg" Width="200" Stretch="Uniform"/><!--UniformToFill: 图片将被缩放,以便完全填充图片区域。将保留图片的宽高比。--><Image Source="/Imgs/1.jpg" Width="200" Stretch="UniformToFill"/></WrapPanel></StackPanel>
</Window>

后台代码给Source属性赋值

ImageViewer1.Source = new BitmapImage(new Uri(@"Images\\VS2015.jpg", UriKind.Relative));

动态加载图片

private void btnDynamic_Click(object sender, RoutedEventArgs e)
{// Create Image and set its width and height Image dynamicImage = new Image();dynamicImage.Width = 300;dynamicImage.Height = 200;// Create a BitmapSource BitmapImage bitmap = new BitmapImage();bitmap.BeginInit();bitmap.UriSource = new Uri(@"C:\\Users\\WPF加载图片文件\\WpfApp1\\Images\\VS2015.png");bitmap.EndInit();// Set Image.Source dynamicImage.Source = bitmap;// Add Image to Window sp1.Children.Add(dynamicImage);
} 

自动生成随机图片
面的案例用于生成一个随机图像。

private void btnLoad_Click(object sender, RoutedEventArgs e)
{PixelFormat pf = PixelFormats.Bgr32;int width = 400;int height = 200;int rawStride = (width * pf.BitsPerPixel + 7) / 8;byte[] rawImage = new byte[rawStride * height];Random value = new Random();value.NextBytes(rawImage);var bmp = BitmapSource.Create(width, height,      //宽高96, 96, pf, null,   //DPIrawImage,           //生成图像的数组 rawStride);         //行偏移量img.Source = bmp;
}

其中,

BitmapSource.Create

用于创建一个图像,其输入参数如下

width 图像宽
height 图像高
96, 96, pf, null, DPI相关设置
rawImage 生成图像的数组
rawStride 行偏移量

相关文章:

WPF 使用Image控件显示图片

Source属性 Source属性用来告诉Image组件要展示哪张图片资源的一个入口&#xff0c;通常是图片的路径。也许是本地路径&#xff0c;也许是网络路径。 本地图片路径加载方式 使用相对路径&#xff0c;相对于工程目录的路径&#xff0c;当设置Width属性时&#xff0c;图片会等…...

合肥工业大学内容安全实验一:爬虫|爬新闻文本

✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :合肥工业大学实验课设 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,永远是个观众。平台再好,你不参与,永远是局外人。能力再大,你不行动,只能看别人成功!没有人会关心你付…...

自动驾驶---Perception之视觉点云雷达点云

1 前言 在自动驾驶领域&#xff0c;点云技术的发展历程可以追溯到自动驾驶技术的早期阶段&#xff0c;特别是在环境感知和地图构建方面。 在自动驾驶技术的早期技术研究中&#xff0c;视觉点云和和雷达点云都有出现。20世纪60年代&#xff0c;美国MIT的Roberts从2D图像中提取3D…...

maven 显式依赖包包含隐式依赖包,引起依赖包冲突

问题&#xff1a;FlinkCDC 3.0.1 代码 maven依赖包冲突 什么是依赖冲突 依赖冲突是指项目依赖的某一个jar包&#xff0c;有多个不同的版本&#xff0c;因而造成类包版本冲突 依赖冲突的原因 依赖冲突很经常是类包之间的间接依赖引起的。每个显式声明的类包都会依赖于一些其它…...

Spring应用如何打印access日志和out日志(用于分析请求总共在服务耗费多长时间)

我们经常会被问到这样一个问题。你接口返回的好慢呀&#xff0c;能不能提升一下接口响应时间啊&#xff1f;这个时候我们就需要去分析&#xff0c;为什么慢&#xff0c;慢在哪。而这首先应该做的就是确定接口返回时间过长确实是在服务内消耗的时间。而不是我们将请求发给网关或…...

SpringBoot整合SpringDataRedis

目录 1.导入Maven坐标 2.配置相关的数据源 3.编写配置类 4.通过RedisTemplate对象操作Redis SpringBoot整合Redis有很多种&#xff0c;这里使用的是Spring Data Redis。接下来就springboot整合springDataRedis步骤做一个详细介绍。 1.导入Maven坐标 首先&#xff0c;需要导…...

电脑怎么录制游戏视频?轻松捕捉每一帧精彩

随着游戏产业的蓬勃发展&#xff0c;越来越多的玩家不仅满足于在游戏世界中的探索与冒险&#xff0c;更希望将自己的游戏精彩瞬间记录下来&#xff0c;分享给更多的朋友。可是电脑怎么录制游戏视频呢&#xff1f;本文旨在为广大游戏爱好者提供一份详细的电脑游戏视频录制攻略&a…...

【Elasticsearch】索引快照并还原到其他集群

【Elasticsearch】索引快照并还原到其他集群 前提&#xff1a;es节点的所有用户id和组id都需要相同&#xff0c;最好在新建集群时指定用户id和组id&#xff0c;否则挂载后执行curl时会提示权限报错。 解决方法&#xff08;gpt生成&#xff09;&#xff0c;不敢在生产尝试。 点…...

QT--DAY1

不使用图形化界面实现一个登陆界面 #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {//设置窗口标题this->setWindowTitle("登录界面");//设置窗口大小this->resize(535,410);//固定窗口大小this->setFixedSize(535,410)…...

DSP教学实验箱_数字图像处理_操作教程:5-1 图像旋转

一、实验目的 学习图像旋转的原理&#xff0c;掌握图像的读取方法&#xff0c;并实现图像旋转。 二、实验原理 图像旋转 图像的旋转是指以图像的某一点为原点以逆时针或顺时针旋转一定的角度。其本质是以图像的中心为原点&#xff0c;将图像上的所有像素都旋转一个相同的角…...

MyBatis总结(2)- MyBatis实现原理(三)

核心配置 JavaBeanMapper.xml&#xff08;sql映射&#xff09; 作用 JavaBeanMapper.xml实现&#xff1a; 用来干什么&#xff1f; 定义Sql语句映射。相对照JDBC的实现&#xff0c;是将原本的Sql代码提取出来&#xff0c;最终根据映射关系执行Sql操作。 好处&#xff1f; 解…...

【保姆级教程】Linux 基于 Docker 部署 MySQL 和 Nacos 并配置两者连接

一、Linux 部署 Docker 1.1 卸载旧版本&#xff08;如有&#xff09; sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine1.2 安装 yum-utils 包 sudo yum install -y…...

Dev C++ 安装及使用方法教程-干活多超详细

Dev C 是一款非常好用&#xff0c;简约的C/C开发工具。可以减少很多创建工程的繁琐步骤&#xff0c;很快的进行开发。对于只用于来写代码的人来说&#xff0c;是比较轻量以及极速的。 Dev C 是一个windows下的c和c程序的集成开发环境。它使用mingw32/gcc编译器&#xff0c;遵循…...

无缝滚动的swiper

看效果 看代码 <swiper :indicator-dots"true" :autoplay"true" circular :interval"3000" :duration"6000" display-multiple-items"3" easing-function"linear"><swiper-item v-for"(item,indx…...

tvm实战踩坑

今天玩了一下tvm的安装 我要安装v0.14.0的版本 所以按照官网的方法 https://tvm.apache.org/docs/install/from_source.html#python-package-installation git clone --recursive https://github.com/apache/tvm tvmgit checkout v0.14.0recursive是很重要的 这一步可以替换成…...

计算机网络之网络层知识总结

网络层功能概述 主要任务 主要任务是把分组从源端传到目的端&#xff0c;为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报。 分组和数据报的关系&#xff1a;把数据报进行切割之后&#xff0c;就是分组。 主要功能&#xff1a; 路由选择与分组转发 路由器…...

利用穿戴甲虚拟试戴技术提高销量和参与度

在不断变化的美容行业&#xff0c;保持领先意味着拥抱创新技术。其中一项改变游戏规则的技术是人工智能驱动的虚拟指甲试戴。在穿戴甲领域&#xff0c;不断兴起的虚拟试戴技术对促进销售和参与度产生了重大影响。 视觉吸引力的力量 要了解虚拟试戴的重要性&#xff0c;必须了解…...

后端|压缩Base64图片的两种方式

Base64是一种将二进制数据编码为ASCII字符串的方法。它通过将3个字节的二进制数据转换为4个可打印字符的ASCII字符&#xff0c;从而将二进制数据转换为可传输的文本格式。Base64编码常用于传输图片或音频文件。Base64编码可以保证数据在传输过程中不丢失&#xff0c;同时可以避…...

HCIP认证笔记(单选题)

1、OSPF Hello报文中不包括:process ID 3、IS-IS路由的开销在narrow模式下路由的开销值取值范围是:1~63; 在wide模式下路由的开销取值范围为:1~16777215 4、attached-bit advertise never 命令可以使level-1设备不生成缺省路由; 5、OSPFv3报文封装在IPv6报文内,IPv…...

数据结构笔记-2、线性表

2.1、线性表的定义和基本操作 如有侵权请联系删除。 2.1.1、线性表的定义&#xff1a; ​ 线性表是具有相同数据类型的 n (n>0) 个数据元素的有限序列&#xff0c;其中 n 为表长&#xff0c;当 n 0 时线性表是一个空表。若用 L 命名线性表&#xff0c;则其一般表示为&am…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

NPOI操作EXCEL文件 ——CAD C# 二次开发

缺点:dll.版本容易加载错误。CAD加载插件时&#xff0c;没有加载所有类库。插件运行过程中用到某个类库&#xff0c;会从CAD的安装目录找&#xff0c;找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库&#xff0c;就用插件程序加载进…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址&#xff1a;Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址&#xff08;如 10.244.1.2&#xff09;无特殊名称&#xff1a;在 Kubernetes 中&#xff0c;它通常被称为 “Pod IP” 或 “容器 IP”生命周期&#xff1a;与 Pod …...

Redis上篇--知识点总结

Redis上篇–解析 本文大部分知识整理自网上&#xff0c;在正文结束后都会附上参考地址。如果想要深入或者详细学习可以通过文末链接跳转学习。 1. 基本介绍 Redis 是一个开源的、高性能的 内存键值数据库&#xff0c;Redis 的键值对中的 key 就是字符串对象&#xff0c;而 val…...

性能优化中,多面体模型基本原理

1&#xff09;多面体编译技术是一种基于多面体模型的程序分析和优化技术&#xff0c;它将程序 中的语句实例、访问关系、依赖关系和调度等信息映射到多维空间中的几何对 象&#xff0c;通过对这些几何对象进行几何操作和线性代数计算来进行程序的分析和优 化。 其中&#xff0…...