ImageSource怎么赋值
很多时候,我们会使⽤图⽚来装饰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,本⽂到此结束,以上⽅法都是⾃⼰在使⽤中探索所得,如果有更好的⽅法,本⼈⾮常愿意和各位交流。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。