zoukankan      html  css  js  c++  java
  • WPF中的imagesource 和内存图片的处理

    [转载]ImageSource的使用心得

    很多时候,我们会使用图片来装饰UI,比如作为控件背景等。

    而这些图片可以分为两种形式,即存在于本地文件系统中的图片和存在于内存中的图片

    对于这两种形式的图片,在WPF中,使用方法不同,下面主要说明针对这两种形式图片的使用方法

    一、存在于本地文件系统中的图片文件

    对于此类图片,使用非常简单,在xaml中直接指定路径即可,如:

    1WPF中的imagesource - 渺儿 - miaoerjyzhu的博客<Button>

    2WPF中的imagesource - 渺儿 - miaoerjyzhu的博客    <Button.Background>

    3WPF中的imagesource - 渺儿 - miaoerjyzhu的博客        <ImageBrush ImageSource="bg.jpg"/>

    4WPF中的imagesource - 渺儿 - miaoerjyzhu的博客    </Button.Background>

    5WPF中的imagesource - 渺儿 - miaoerjyzhu的博客</Button>

    对应的的C#代码为

    1WPF中的imagesource - 渺儿 - miaoerjyzhu的博客ImageBrush imageBrush = new ImageBrush();

    2WPF中的imagesource - 渺儿 - miaoerjyzhu的博客imageBrush.ImageSource = new BitmapImage(new Uri("bg.jpg", UriKind.Relative));

    3WPF中的imagesource - 渺儿 - miaoerjyzhu的博客button.Background = imageBrush;

    其中imageBrush.ImageSource的类型为ImageSource,而ImageSource是个抽象类,

    因此我们不能直接使用它,而是使用它的子类来代替,查阅MSDN,可以看到它们的继承关系:

    System.Windows.Media.ImageSource

       System.Windows.Media.DrawingImage 

          System.Windows.Media.Imaging.BitmapSource

    二、存在于内存中的图片

     对于只存在于内存中的图片,用以上方法就显得无能为力了,我们应该另寻他法,下面介绍一种方法:

    先看代码:

    1WPF中的imagesource - 渺儿 - miaoerjyzhu的博客//此处图片从文件中读入用以模拟内存中的图片

    2WPF中的imagesource - 渺儿 - miaoerjyzhu的博客System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap("bg.jpg");

    3WPF中的imagesource - 渺儿 - miaoerjyzhu的博客MemoryStream stream = new MemoryStream();

    4WPF中的imagesource - 渺儿 - miaoerjyzhu的博客bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png);

    5WPF中的imagesource - 渺儿 - miaoerjyzhu的博客ImageBrush imageBrush = new ImageBrush();

    6WPF中的imagesource - 渺儿 - miaoerjyzhu的博客ImageSourceConverter imageSourceConverter = new ImageSourceConverter();

    7WPF中的imagesource - 渺儿 - miaoerjyzhu的博客

    8WPF中的imagesource - 渺儿 - miaoerjyzhu的博客imageBrush.ImageSource = (ImageSource)imageSourceConverter.ConvertFrom(stream);

    9WPF中的imagesource - 渺儿 - miaoerjyzhu的博客button.Background = imageBrush;

    其中bitmap即是存在于内存中的Bitmap类型图片,此处使用直接加载本地图片文件模拟。

    步骤是先将它保存到流中,再使用ImageSourceConverter 类的ConvertFrom方法从流中得到我们需要的图片

    OK,本文到此结束,以上方法都是自己在使用中探索所得,如果有更好的方法,本人非常愿意和各位交流。

    联系方式在Blog标题上

  • 相关阅读:
    查找代码行数和查看域名版本
    iOS10里的通知与推送
    计算有多少个岛屿
    java.lang.NoClassDefFoundError: Could not initialize class com.haoyao.shop.common.XXX
    Windows 版本Mongodb 启动
    安装第三方库 报错Python version 2.7 required, which was not found in the registry
    Python 爬虫 报错 403 HTTP Error 403: Forbidden
    廖雪峰 练习 把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字
    利用Python 2.7打印杨辉三角
    MAVEN实战 读书笔记 第二章
  • 原文地址:https://www.cnblogs.com/qq247039968/p/4169117.html
Copyright © 2011-2022 走看看