• 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方法从流中得到我们需要的图片

  • 相关阅读:
    迭代器模式
    工厂方法模式
    ajax发送多个跨域请求回调不混乱
    Java中&和&&的区别
    使用jstl方式替换服务器请求地址
    用jinja2替换Django的模板
    Django在apache中的配置
    从word中提取图片的三种方法
    IE中出现 "Stack overflow at line" 错误的解决方法
    c# 空接合(??)运算符的运用
  • 原文地址:https://www.cnblogs.com/fuchongjundream/p/4081193.html
Copyright © 2020-2023  润新知