WPF 引用DLL純圖像資源包類庫中的圖片
————————jcstone
1、建立WPF應(yīng)用程序
過程略。
2、創(chuàng)建類庫項(xiàng)目(圖片資源包)
創(chuàng)建圖片資源類庫項(xiàng)目MyImages,刪除class1.cs,在項(xiàng)目屬性的資源選項(xiàng)中選擇“圖像”類型,并在“添加資源”中點(diǎn)擊“添加現(xiàn)有的文件”,把圖像加入到資源。并把訪問修飾符改為Public。
3、在WPF應(yīng)用程序中引用類庫項(xiàng)目
在WPF中通過 MyImages.Properties.Resources.XXX即可訪問圖像。XXX為圖像文件名(資源名稱)。但在WPF中的到圖像還需一下工作。
4、WPF中創(chuàng)建Rectangle或其它采用ImageBrush對象為填充或背景的控件,將ImageBrush的ImageSource屬性設(shè)置為資源包中圖像的方法如下:
/// <summary>
/// 讀取符號(圖片資源庫中的文件) /// </summary> /// <param name="symbolName"></param> /// <returns></returns> private static ImageBrush GetImagebrush(string ImageName) { ImageBrush imageBrush = new ImageBrush(); System.Resources.ResourceManager rm =MyImages.Properties.Resources.ResourceManager; System.Drawing.Bitmap b = (System.Drawing.Bitmap)rm.GetObject(symbolName); public static BitmapSource ToWpfBitmap(Bitmap bitmap) { using (MemoryStream stream = new MemoryStream()) { //注意:轉(zhuǎn)換的圖片的原始格式ImageFormat設(shè)為BMP、JPG、PNG等 bitmap.Save(stream, ImageFormat.Png); stream.Position = 0;
BitmapImage result = new BitmapImage(); result.BeginInit(); // According to MSDN, "The default OnDemand cache option retains access to the stream until the image is needed." // Force the bitmap to load right now so we can dispose the stream. result.CacheOption = BitmapCacheOption.OnLoad; result.StreamSource = stream; result.EndInit(); result.Freeze(); return result; } } 調(diào)用方法: Rectangle1.Fill=GetImagebrush(ImageName); 注意轉(zhuǎn)換的圖片的原始格式ImageFormat必須設(shè)置正確。如原圖片為PNG格式,調(diào)用時(shí)設(shè)為BMP格式時(shí)會失真。 |
|