概述
? ? ??個人的項目界面有時候需要用到很多圖標,這些圖片可以建立一個文件夾單獨存放,但有時涉及到多臺設備部署的話,每臺設備都需要隨項目一起拷貝過去,如果忘記了界面顯示就會出問題,有沒有更好的辦法解決?
? ? 有,當然有,這節就針對這個問題介紹一種辦法,將圖片嵌入資源隨DLL一起打包.
方法介紹? ? ?
step1:點擊項目-》右鍵-》屬性-》資源-》添加資源
step2:前臺綁定
<WrapPanel ><Image Source="{Binding AddPNG}" Width="15" Height="15" /><TextBlock Text="添加" VerticalAlignment="Center" /></WrapPanel>
step3:后臺定義和調用
public System.Windows.Media.ImageSource AddPNG { get; set; }
這里定義的是個ImageSource類型的數據,圖片需要轉換下:以下方法需要放到構造函數中
AddPNG = ChangeBitmapToImageSource(Caburn.Micro.Hello.Properties.Resources.add);
[DllImport("gdi32.dll", SetLastError = true)]private static extern bool DeleteObject(IntPtr hObject);/// <summary>/// 從bitmap轉換成ImageSource/// </summary>/// <param name="icon"></param>/// <returns></returns>public static System.Windows.Media.ImageSource ChangeBitmapToImageSource(Bitmap bitmap){//Bitmap bitmap = icon.ToBitmap();IntPtr hBitmap = bitmap.GetHbitmap();System.Windows.Media.ImageSource wpfBitmap = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(hBitmap,IntPtr.Zero,Int32Rect.Empty,System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());if (!DeleteObject(hBitmap)){throw new System.ComponentModel.Win32Exception();}return wpfBitmap;}
然后,你運行生成你的DLL,無論哪里用,也不需要再把這個圖片另外拷貝一份了。顯示結果:
實際上更簡單的方式是直接將圖片的生產操作修改為Resource,然后在引用的地方:
<Image Source="/Images/userlogin.png"/>
如果應用了全局樣式,需要添加下Style=“{x:Null}”
聲明
技術群:添加小編微信并備注進群
小編微信:mm1552923 ??
公眾號:dotNet編程大全? ??