| 概述      個(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}”
 
 聲明 |