博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ImageSource使用心得(转)
阅读量:7178 次
发布时间:2019-06-29

本文共 1353 字,大约阅读时间需要 4 分钟。

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

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

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

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

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

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

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

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

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

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

对应的的C#代码为

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

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

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

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

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

System.Windows.Media.ImageSource

   System.Windows.Media.DrawingImage 

      System.Windows.Media.Imaging.BitmapSource

二、存在于内存中的图片

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

先看代码:

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

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

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

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

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

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

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

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

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

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

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

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

 

原文地址:

转载于:https://www.cnblogs.com/XzcBlog/p/3972304.html

你可能感兴趣的文章
奇虎360将于7月18日从纽约证交所摘牌
查看>>
传软银同意以234亿英镑收购英国芯片设计厂商ARM
查看>>
防爆摄像机应用特殊 从技术入手谋发展
查看>>
去年全球钓鱼攻击达历史最高水平
查看>>
GitHub增加了代码审查、项目管理等新功能
查看>>
深圳成为乌拉圭智慧城市解决方案输出地
查看>>
直播热潮之下的图片社交洼地
查看>>
多地部署高考安防措施 严防在校大学生替考
查看>>
两周过去了,“想哭”勒索蠕虫近来可好?
查看>>
微软将于10月起禁用旧版Flash Player:Win8.1/10平台不受影响
查看>>
2017年网工必备8大技能
查看>>
国内车载信息安全产业联盟成立
查看>>
传微软2.5亿美元收购输入法应用SwiftKey
查看>>
向万物互联进发!中国电信智慧双创物联网示范基地启动
查看>>
赛门铁克警告Switch模拟器下载链接实为垃圾站点
查看>>
Facebook 为何要放弃辟谣?
查看>>
抓住“智慧城市”的机遇
查看>>
摩拜联手高通中移动 剑指最大物联平台步子太大?
查看>>
管理工具Meta SaaS完成150万美元融资,继续加强市场推广
查看>>
大数据,让知识成为一种服务
查看>>