很多时候,我们会使用图片来装饰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,本文到此结束,以上方法都是自己在使用中探索所得,如果有更好的方法,本人非常愿意和各位交流。
相关推荐
使用"Image Shadow UserControl"非常简单。首先,需要将控件添加到ASP.NET项目的工具箱中,然后在网页设计视图中拖放该控件到适当位置。接着,设置控件的属性,如阴影的颜色、透明度、角度、距离等。最后,将要添加...
ArcMap 可以将多种数据类型作为数据层进行加载,诸如 AutoCAD 矢量数据 DWG,ArcGIS 的 矢量数据 Coverage、GeoDatabase、TIN 和栅格数据 GRID,ArcView 的矢量数据 ShapeFile,ERDAS 的栅格数据 ImageFile,USDS 的...
- 摄影设备和产品形象的规范,特别是ArcArmor®产品,以及The Miller图像站点Image Source的使用。 15. 标识: - 外部标志、分销商标志和贴纸,以及运输车辆的标识设计。 16. 产品命名: - Miller产品命名流程...
在WPF中,我们可以利用BitmapImage或ImageSource对象来加载和显示皮肤图片。皮肤的切换可能通过更换资源文件或者动态改变控件的样式来实现。 此外,`.sln`文件是Visual Studio的解决方案文件,包含了项目及其依赖...
数据保存方面,可以使用save.image()函数保存工作空间,或者使用source()函数执行已经编写好的R程序。 R语言还提供了丰富的函数来进行数学计算和统计分析。比如,sum()函数用于求和,prod()函数用于求积,median()...
OSINT(Open-Source Intelligence)是从公开来源收集的信息,包括社交媒体、论坛、博客、新闻报道、学术文章等。在网络安全领域,OSINT可以用于威胁情报、风险评估以及像校园枪击案调查这样的特定事件分析。 1. ...
- **VxWorks Image Projects (VIP)**:VIP 是一种特殊的项目类型,用于创建包含操作系统内核和服务的完整系统镜像。 **4.3 设备驱动选择** 在配置过程中,需要根据实际硬件设备选择相应的驱动程序。这一步骤非常...
6. **openLayer3地图的使用心得**: 这可能是一个包含作者使用OpenLayers 3的经验分享的文档,可能涵盖性能优化、自定义控制、图层管理和事件处理等方面的知识。 7. **示例源码**: 压缩包中的“openlayer3例子...
2. **图层管理**:学习如何添加不同的图层类型,如瓦片图层(Tile Layer)、瓦片源(Tile Source)、图像图层(Image Layer)和矢量图层(Vector Layer)。掌握图层的可见性、透明度、叠加顺序等属性的调整方法。 3...
在Android开发中,3D滑动菜单是一种提升用户体验和视觉效果的设计手法,它通过立体的推拉门式动画,使得用户在操作应用时感受到更为生动的交互体验。本篇文章将详细解析如何在Android中实现这样的特效。 首先,我们...
- **社区交流**:加入相关技术社区,如Stack Overflow、Reddit等,与其他开发者交流经验心得。 总之,这个项目不仅涵盖了HTML5、CSS3和JavaScript的基础知识,还涉及到了多媒体集成、响应式设计等多个进阶技能,...
<blockquote cite="http://www.example.com/source"> 这是一段引用的文字。 ``` #### 四、Figure标签 - **用途**:定义媒体内容,如图片、图表、代码片段等。 - **子标签**: - **Img**:定义图像,必须包含...
最后,"disk image" 文件则是一个虚拟磁盘映像,用于在模拟器或真实的 Apple II 硬件上运行程序,它保存了所有必要的执行文件和配置信息。 开源软件的发展推动了技术的共享和进步,"mouse-maze" 项目就是其中的一个...
可以与ask for,require替换使用,表示请求或需要某物。 7. **case**:事例,案例。可以与base(基础)和vase(花瓶)进行联想,以记住其形状和含义。 8. **clone**:无性繁殖,克隆。谐音记忆法可以帮助记住这个...