码迷,mamicode.com
首页 > 其他好文 > 详细

ImageSource的使用

时间:2014-11-07 14:39:11      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:blog   http   ar   os   使用   sp   for   strong   文件   

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

 

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

 

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

 

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

 

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

ImageSource的使用

标签:blog   http   ar   os   使用   sp   for   strong   文件   

原文地址:http://www.cnblogs.com/fuchongjundream/p/4081193.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!