WPF Image赋值的两种方法

简介: using System; using System.Collections.Generic; using System.Linq; using System.

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6. using System.Collections;
  7. using System.Security.Cryptography;
  8. using System.Windows.Controls;
  9. using System.ComponentModel;
  10. using System.Collections.ObjectModel;
  11. using System.Runtime.InteropServices;

  12. namespace DrawWpf
  13. {
  14.     class FrmClass
  15.     {
  16.         #region 提供两种给Image的Source赋值的方法
  17.         public static System.Windows.Media.ImageBrush GetImageBrushFrom_PResource(System.Drawing.Bitmap imgSrc)
  18.         {
  19.             System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(imgSrc);
  20.             MemoryStream stream = new MemoryStream();

  21.             bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
  22.             System.Windows.Media.ImageBrush imgBrush = new System.Windows.Media.ImageBrush();
  23.             System.Windows.Media.ImageSourceConverter isConverter = new System.Windows.Media.ImageSourceConverter();
  24.             imgBrush.ImageSource = (System.Windows.Media.ImageSource)isConverter.ConvertFrom(stream);

  25.             return imgBrush;
  26.         }

  27.         [DllImport("gdi32.dll", SetLastError = true)]
  28.         private static extern bool DeleteObject(IntPtr hObject);
  29.         //将 Bitmap转换为BitmapSource
  30.         //使用过System.Drawing.Bitmap后一定要用DeleteObject释放掉对象,不然内存不释放,很快系统内存就消耗光了。
  31.         public static System.Windows.Media.ImageSource BitmapToBitmapSource(System.Drawing.Bitmap bitmap)
  32.         {
  33.             IntPtr hBitmap = bitmap.GetHbitmap();
  34.             System.Windows.Media.ImageSource wpfBitmap = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
  35.                 hBitmap,
  36.                 IntPtr.Zero,
  37.                 System.Windows.Int32Rect.Empty,
  38.                 System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
  39.             if (!DeleteObject(hBitmap))//记得要进行内存释放。否则会有内存不足的报错。
  40.             {
  41.                 throw new System.ComponentModel.Win32Exception();
  42.             }

  43.             return wpfBitmap;
  44.         }
  45.         #endregion

  46.     }
  47. }
调用方法:
  1. Random rdm = new Random();
  2. this.image1.Source = FrmClass.BitmapToBitmapSource(AppResource.Vote);
  3. this.image2.Source = FrmClass.GetImageBrushFrom_PResource(AppResource.Vote).ImageSource;

参考文献:
http://www.wxzzz.com/1410.html
相关文章
|
4月前
|
C#
WPF/C#:数据绑定到方法
WPF/C#:数据绑定到方法
47 0
|
C#
WPF技术之Image控件
Image控件可以用于加载和显示各种图像格式,包括位图(Bitmap)、矢量图(Vector)、矢量文档(XPS)等。它可以加载本地文件系统中的图像,或者从网络上下载图像。
428 0
|
C# Windows
WPF的WindowsFormsHost上浮动控件方法
如何在WPF的WindowsFormsHost实现浮动控件
305 0
|
C# 虚拟化 UED
细数改善WPF应用程序性能的10大方法
原文:细数改善WPF应用程序性能的10大方法       WPF(Windows Presentation Foundation)应用程序在没有图形加速设备的机器上运行速度很慢是个公开的秘密,给用户的感觉是它太吃资源了,WPF程序的性能和硬件确实有很大的关系,越高档的机器性能越有优势。
1277 0
|
Java C#
C# WPF Image Source 频繁切换导致垃圾回收不及时导致内存占用不断增加的问题
C# WPF Image Source 频繁切换导致垃圾回收不及时导致内存占用不断增加的问题
2472 0
|
C#
【C#/WPF】Image图片的Transform变换:平移、缩放、旋转
原文:【C#/WPF】Image图片的Transform变换:平移、缩放、旋转 WPF中图像控件Image的变换属性Transform: 平移 缩放 旋转 即要想实现图片的平移、缩放、旋转,是修改它所在的Image控件的Transform变换属性。
5049 0
|
C#
WPF在DLL中读取Resource的方法
原文:WPF在DLL中读取Resource的方法 WPF是个用户控件,被WinForm调用。而WinForm是在一个DLL类库中被调用。试了很多方法,都无法将Resource中的图读进程序。用下面的方法总算实现了。
1790 0
|
C#
WPF获取窗口句柄的方法
原文:WPF获取窗口句柄的方法 通过WPF的互操作帮助类WindowInteropHelper,相关连接:https://msdn.microsoft.com/zh-cn/library/system.
1690 0
|
文字识别 C++
WPF4.0用tablet实现手写输入(更新XP SP3下也能手写输入方法)
原文:WPF4.0用tablet实现手写输入(更新XP SP3下也能手写输入方法)     由于项目需求一个手写输入的控件,纠结了2天,终于搞定了。   主要是由于本人的英语不过关,一直和ocr混淆在一起,研究了Tesseract-OCR,我说奇怪了号称老牌OCR新版本还支持中文,怎么效果这么差,必须写个标准楷体才能够识别...||-_-.。
1096 0
|
C# 存储
WPF中在XAML中实现数据类型转换的两种方法
原文:WPF中在XAML中实现数据类型转换的两种方法 熟悉数据绑定的朋友都知道,当我们在Model中获取一个对象的数据,常常需要对其进行数据转换后显示在UI界面上,比如你用bool类型存储了一个人的性别,但是在界面上却需要经过转化后显示为男或女; 今天又把数据绑定部分又看了一下,在这里就算是做个总...
1060 0