小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

C#實(shí)用技巧之:將圖標(biāo)打包進(jìn)DLL并讀取

 ontheroad96j47 2022-05-13

概述

      個(gè)人的項(xiàng)目界面有時(shí)候需要用到很多圖標(biāo),這些圖片可以建立一個(gè)文件夾單獨(dú)存放,但有時(shí)涉及到多臺(tái)設(shè)備部署的話(huà),每臺(tái)設(shè)備都需要隨項(xiàng)目一起拷貝過(guò)去,如果忘記了界面顯示就會(huì)出問(wèn)題,有沒(méi)有更好的辦法解決?

    有,當(dāng)然有,這節(jié)就針對(duì)這個(gè)問(wèn)題介紹一種辦法,將圖片嵌入資源隨DLL一起打包.

方法介紹     

step1:點(diǎn)擊項(xiàng)目-》右鍵-》屬性-》資源-》添加資源

step2:前臺(tái)綁定

                <WrapPanel >                    <Image Source="{Binding AddPNG}" Width="15" Height="15" />                    <TextBlock Text="添加" VerticalAlignment="Center" />                </WrapPanel>

step3:后臺(tái)定義和調(diào)用

public System.Windows.Media.ImageSource AddPNG { get; set; }

這里定義的是個(gè)ImageSource類(lèi)型的數(shù)據(jù),圖片需要轉(zhuǎn)換下:以下方法需要放到構(gòu)造函數(shù)中

AddPNG = ChangeBitmapToImageSource(Caburn.Micro.Hello.Properties.Resources.add);
  [DllImport("gdi32.dll", SetLastError = true)]        private static extern bool DeleteObject(IntPtr hObject);
/// <summary> /// 從bitmap轉(zhuǎn)換成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; }

然后,你運(yùn)行生成你的DLL,無(wú)論哪里用,也不需要再把這個(gè)圖片另外拷貝一份了。顯示結(jié)果:

實(shí)際上更簡(jiǎn)單的方式是直接將圖片的生產(chǎn)操作修改為Resource,然后在引用的地方:

  <Image Source="/Images/userlogin.png"/>

如果應(yīng)用了全局樣式,需要添加下Style=“{x:Null}”

聲明

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多