当前位置: 首页 > 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 行偏移量

http://www.lryc.cn/news/372107.html

相关文章:

  • 合肥工业大学内容安全实验一:爬虫|爬新闻文本
  • 自动驾驶---Perception之视觉点云雷达点云
  • maven 显式依赖包包含隐式依赖包,引起依赖包冲突
  • Spring应用如何打印access日志和out日志(用于分析请求总共在服务耗费多长时间)
  • SpringBoot整合SpringDataRedis
  • 电脑怎么录制游戏视频?轻松捕捉每一帧精彩
  • 【Elasticsearch】索引快照并还原到其他集群
  • QT--DAY1
  • DSP教学实验箱_数字图像处理_操作教程:5-1 图像旋转
  • MyBatis总结(2)- MyBatis实现原理(三)
  • 【保姆级教程】Linux 基于 Docker 部署 MySQL 和 Nacos 并配置两者连接
  • Dev C++ 安装及使用方法教程-干活多超详细
  • 无缝滚动的swiper
  • tvm实战踩坑
  • 计算机网络之网络层知识总结
  • 利用穿戴甲虚拟试戴技术提高销量和参与度
  • 后端|压缩Base64图片的两种方式
  • HCIP认证笔记(单选题)
  • 数据结构笔记-2、线性表
  • Linux基础IO【II】真的很详细
  • 【C++】模板及模板的特化
  • 2001-2023年上市公司数字化转型测算数据(含原始数据+处理代码+计算结果)
  • ICRA 2024:基于视觉触觉传感器的物体表⾯分类的Sim2Real双层适应⽅法
  • 代理模式(设计模式)
  • C++函数参数传递
  • 软考初级网络管理员_09_网络单选题
  • 曲线拟合 | 二次B样条拟合曲线
  • delphi FDMemTable1.SourceView遍历各行数据,取任意行数据无需Next移动指针了。TFDDatSView
  • 为什么选择 ABBYY FineReader PDF ?
  • php遇到的问题