ImageSource的使用心得
来源:互联网 发布:贝尔狂虐伊莲娜 知乎 编辑:程序博客网 时间:2024/06/07 04:54
原帖:http://shansun123.iteye.com/blog/587695
很多时候,我们会使用图片来装饰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方法从流中得到我们需要的图片
OK,本文到此结束,以上方法都是自己在使用中探索所得,如果有更好的方法,本人非常愿意和各位交流。
- ImageSource的使用心得
- ImageSource的使用心得
- ImageSource的使用心得
- bitmap 转 wpf 的 imageSource
- 使用不安全代码将 Bitmap 位图转为 WPF 的 ImageSource 以获得高性能和持续小的内存占用
- Metro开发中ImageSource使用之我得
- System.Drawing.Bitmap转换成WPF中可用的ImageSource
- WPF Image控件中的ImageSource与Bitmap的互相转换
- Wpf ImageSource对象与Bitmap对象的互相转换
- freemarker的使用心得,freemarker使用心得
- 异常的使用心得
- 使用JSP的心得
- Ndoc的使用心得
- Quartz的使用心得
- treeview 的使用心得
- TcxTreeList的使用心得。
- Cookies的使用心得
- pd11的使用心得
- 带DTD 的XML 用SAX进行解析
- 揭开应用推广运营背后的秘密
- vb commondialog 如何设置初始化路径啊?
- android 自定义折线图
- 看看牛人们是怎么评价编程语言的
- ImageSource的使用心得
- C #define中的 "\,#,## #@"
- ubuntu11.10 ssh密钥对登录
- DirectX9 SDK Samples(22) ParallaxOcclusionMapping
- PC电脑和Android模拟器访问及模拟器之间tcp/udp通信
- Android NullPointerException解决方法
- 修改weblogic密码
- 当今世界学习OpenGL的最有名的教程
- java 设计模式--策略模式(strategy)