4

ImageSource使用心得

系统 1746 0

很多时候,我们会使用图片来装饰UI,比如作为控件背景等。

而这些图片可以分为两种形式,即存在于本地文件系统中的图片和存在于内存中的图片

对于这两种形式的图片,在WPF中,使用方法不同,下面主要说明针对这两种形式图片的使用方法

一、存在于本地文件系统中的图片文件

对于此类图片,使用非常简单,在xaml中直接指定路径即可,如:

1 WPF中的imagesource - 渺儿 - miaoerjyzhu的博客 <Button>

2 WPF中的imagesource - 渺儿 - miaoerjyzhu的博客     <Button.Background>

3 WPF中的imagesource - 渺儿 - miaoerjyzhu的博客         <ImageBrush ImageSource="bg.jpg"/>

4 WPF中的imagesource - 渺儿 - miaoerjyzhu的博客     </Button.Background>

5 WPF中的imagesource - 渺儿 - miaoerjyzhu的博客 </Button>

对应的的C#代码为

1 WPF中的imagesource - 渺儿 - miaoerjyzhu的博客 ImageBrush imageBrush = new ImageBrush();

2 WPF中的imagesource - 渺儿 - miaoerjyzhu的博客 imageBrush.ImageSource = new BitmapImage(new Uri("bg.jpg", UriKind.Relative));

3 WPF中的imagesource - 渺儿 - miaoerjyzhu的博客 button.Background = imageBrush;

其中imageBrush.ImageSource的类型为ImageSource,而ImageSource是个抽象类,

因此我们不能直接使用它,而是使用它的子类来代替,查阅MSDN,可以看到它们的继承关系:

System.Windows.Media.ImageSource

   System.Windows.Media.DrawingImage 

      System.Windows.Media.Imaging.BitmapSource

二、存在于内存中的图片

 对于只存在于内存中的图片,用以上方法就显得无能为力了,我们应该另寻他法,下面介绍一种方法:

先看代码:

1 WPF中的imagesource - 渺儿 - miaoerjyzhu的博客 //此处图片从文件中读入用以模拟内存中的图片

2 WPF中的imagesource - 渺儿 - miaoerjyzhu的博客 System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap("bg.jpg");

3 WPF中的imagesource - 渺儿 - miaoerjyzhu的博客 MemoryStream stream = new MemoryStream();

4 WPF中的imagesource - 渺儿 - miaoerjyzhu的博客 bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png);

5 WPF中的imagesource - 渺儿 - miaoerjyzhu的博客 ImageBrush imageBrush = new ImageBrush();

6 WPF中的imagesource - 渺儿 - miaoerjyzhu的博客 ImageSourceConverter imageSourceConverter = new ImageSourceConverter();

7 WPF中的imagesource - 渺儿 - miaoerjyzhu的博客

8 WPF中的imagesource - 渺儿 - miaoerjyzhu的博客 imageBrush.ImageSource = (ImageSource)imageSourceConverter.ConvertFrom(stream);

9 WPF中的imagesource - 渺儿 - miaoerjyzhu的博客 button.Background = imageBrush;

其中bitmap即是存在于内存中的Bitmap类型图片,此处使用直接加载本地图片文件模拟。

步骤是先将它保存到流中,再使用ImageSourceConverter 类的ConvertFrom方法从流中得到我们需要的图片

OK,本文到此结束,以上方法都是自己在使用中探索所得,如果有更好的方法,本人非常愿意和各位交流。

 

原文地址: http://shansun123.iteye.com/blog/587695

ImageSource使用心得


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论