ImageSource的使用心得

很多时候,我们会使用图片来装饰UI,比如作为控件背景等。
        而这些图片可以分为两种形式,即存在于本地文件系统中的图片和存在于内存中的图片
        对于这两种形式的图片,在WPF中,使用方法不同,下面主要说明针对这两种形式图片的使用方法


        一、存在于本地文件系统中的图片文件
        对于此类图片,使用非常简单,在xaml中直接指定路径即可,如:
        <Button>
        <Button.Background>
        <ImageBrush ImageSource="bg.jpg"/>
        </Button.Background>
        </Button>
        对应的的C#代码为
        ImageBrush imageBrush = new ImageBrush();
        imageBrush.ImageSource = new BitmapImage(new Uri("bg.jpg", UriKind.Relative));
        button.Background = imageBrush;
        其中imageBrush.ImageSource的类型为ImageSource,而ImageSource是个抽象类,
        因此我们不能直接使用它,而是使用它的子类来代替,查阅MSDN,可以看到它们的继承关系:
        System.Windows.Media.ImageSource
        System.Windows.Media.DrawingImage
        System.Windows.Media.Imaging.BitmapSource


        二、存在于内存中的图片
        对于只存在于内存中的图片,用以上方法就显得无能为力了,我们应该另寻他法,下面介绍一种方法:
        先看代码:
        //此处图片从文件中读入用以模拟内存中的图片
        System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap("bg.jpg");
        MemoryStream stream = new MemoryStream();
        bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
        ImageBrush imageBrush = new ImageBrush();
        ImageSourceConverter imageSourceConverter = new ImageSourceConverter();
        imageBrush.ImageSource = (ImageSource)imageSourceConverter.ConvertFrom(stream);
        button.Background = imageBrush;
        其中bitmap即是存在于内存中的Bitmap类型图片,此处使用直接加载本地图片文件模拟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值