ImageSource的使用

很多时候,我们会使用图片来装饰UI,比如作为控件背景等。
而这些图片可以分为两种形式,即存在于本地文件系统中的图片和存在于内存中的图片
对于这两种形式的图片,在WPF中,使用方法不同,下面主要说明针对这两种形式图片的使用方法
一、存在于本地文件系统中的图片文件
对于此类图片,使用非常简单,在xaml中直接指定路径即可,如:

1<Button>
2 <Button.Background>
3 <ImageBrush ImageSource="bg.jpg"/>
4 </Button.Background>
5</Button>
对应的的C#代码为

1ImageBrush imageBrush = new ImageBrush();
2imageBrush.ImageSource = new BitmapImage(new Uri("bg.jpg", UriKind.Relative));
3button.Background = imageBrush;
其中imageBrush.ImageSource的类型为ImageSource,而ImageSource是个抽象类,
因此我们不能直接使用它,而是使用它的子类来代替,查阅MSDN,可以看到它们的继承关系:
System.Windows.Media.ImageSource
System.Windows.Media.DrawingImage
System.Windows.Media.Imaging.BitmapSource
二、存在于内存中的图片
对于只存在于内存中的图片,用以上方法就显得无能为力了,我们应该另寻他法,下面介绍一种方法:
先看代码:

1//此处图片从文件中读入用以模拟内存中的图片
2System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap("bg.jpg");
3MemoryStream stream = new MemoryStream();
4bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
5ImageBrush imageBrush = new ImageBrush();
6ImageSourceConverter imageSourceConverter = new ImageSourceConverter();
7
8imageBrush.ImageSource = (ImageSource)imageSourceConverter.ConvertFrom(stream);
9button.Background = imageBrush;

其中bitmap即是存在于内存中的Bitmap类型图片,此处使用直接加载本地图片文件模拟。
步骤是先将它保存到流中,再使用ImageSourceConverter 类的ConvertFrom方法从流中得到我们需要的图片

时间: 2024-11-05 22:53:40

ImageSource的使用的相关文章

silverlight imagesource赋值与转换

介绍几种常用的Image source 赋值方式: this.abc.Source = new BitmapImage(new Uri("/1.jpg", UriKind.RelativeOrAbsolute)); Uri uri = new Uri("1.jpg", UriKind.Relative); ImageSource imgSource = new System.Windows.Media.Imaging.BitmapImage(uri); this.a

WPF Image控件的Source属性是一个ImageSource对象

1.固定的图片路径是可以的,如下: <Image Source="../test.png" /> 2.绑定的Path是一个String类型的图片路径,而实际情况它需要的是一个ImageSource,所以只需在前面标记它是一个Path类型的值就OK了! <DataTemplate> <Image Source="{Binding Path= IconPath}" /> </DataTemplate> ----------

C# WPF使用ZXing生成二维码ImageSource

1.在http://zxingnet.codeplex.com/站点上下载ZXing .Net的第三方库 2.下载后解压可以看到有针对不同.Net版本的dll文件,在你的工程中引用正确的dll 3.然后再你的工程中引用System.Drawing程序集 4.在你需要生成二维码的Window中,加入一下代码 // 回收对象 [DllImport("gdi32")] static extern int DeleteObject(IntPtr o); /** * 创建二维码图片 */ pri

Silverlight StoryBoard 动态切换ImageSource

Silverlight StoryBoard 动态切换ImageSource <StackPanel Grid.Row="1" Orientation="Horizontal"> <Image x:Name="Mouth" Style="{StaticResource ModuleImageStyle}" Source="../Assets/icons/large/1389966495_Messag

WPF Image控件中的ImageSource与Bitmap的互相转换

1.从bitmap转换成ImageSource [DllImport("gdi32.dll", SetLastError = true)] private static extern bool DeleteObject(IntPtr hObject); /// <summary> /// 从bitmap转换成ImageSource /// </summary> /// <param name="icon"></param&g

WPF中的imagesource 和内存图片的处理

[转载]ImageSource的使用心得 很多时候,我们会使用图片来装饰UI,比如作为控件背景等. 而这些图片可以分为两种形式,即存在于本地文件系统中的图片和存在于内存中的图片 对于这两种形式的图片,在WPF中,使用方法不同,下面主要说明针对这两种形式图片的使用方法 一.存在于本地文件系统中的图片文件 对于此类图片,使用非常简单,在xaml中直接指定路径即可,如: 1<Button> 2    <Button.Background> 3        <ImageBrush 

WPF Bitmap转Imagesource

原文:WPF Bitmap转Imagesource var imgsource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(bmp.GetHbitmap(),IntPtr.Zero,Int32Rect.Empty,BitmapSizeOptions.FromEmptyOptions()); 替换bmp 原文地址:https://www.cnblogs.com/lonelyxmas/p/10789529.html

WPF自定义控件 依赖属性绑定

控件cs文件 using System.ComponentModel; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Markup; using System.Windows.Media; namespace Controls { [TemplatePart(Name = "PART_DropDown"

李洪强详细介绍SDWebImage

SDWebImage是一个开源的第三方库,它提供了UIImageView的一个分类,以支持从远程服务器下载并缓存图片的功能.它具有以下功能: 提供UIImageView的一个分类,以支持网络图片的加载与缓存管理 一个异步的图片加载器 一个异步的内存+磁盘图片缓存 支持GIF图片 支持WebP图片 后台图片解压缩处理 确保同一个URL的图片不被下载多次 确保虚假的URL不会被反复加载 确保下载及缓存时,主线程不被阻塞 从github上对SDWebImage使用情况就可以看出,SDWebImage在