- Přidejte do Vaší konzolové aplikace reference na tyto 4 Assembly:
PresentationCore,System.Drawing,System.XamlaWindowsBase.

Takhle se přidává assemblyPresentationCore, stačí stisknout OK! - Do souboru(ů), kde budeme mít tyto třídy musíme mít tyto
usingdirectivy. Jedná se o ty co jsou vProgram.cspo vytvoření konzolové aplikace a mnou přidané skrzeResolve:CSHARPusing System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Windows.Media.Imaging; - Vytvoříme si několik tříd. Jsou to výtažky z mých pomocných tříd, jsou tam ponechány pouze metody, které se v této ukázce používají:
CSHARP
class BitmapImageHelper { public static BitmapImage MsAppx(string relativePath) { BitmapImage bs = new BitmapImage(new Uri(ImageHelper.protocol + relativePath, UriKind.Absolute)); return bs; } } class ImageHelper { public static string protocol = "pack://application:,,,"; public static void SetAssemblyNameForWpfApps(string assemblyName) { protocol += "/" + assemblyName + ";component/"; } public static void RegisterPackProtocol() { if (!UriParser.IsKnownScheme("pack")) new System.Windows.Application(); } } class Pictures { public static Bitmap BitmapImage2Bitmap(BitmapImage bitmapImage) { using (MemoryStream outStream = new MemoryStream()) { BitmapEncoder encoder = new BmpBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(bitmapImage)); encoder.Save(outStream); System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(outStream); // return bitmap; <-- leads to problems, stream is closed/closing ... return new Bitmap(bitmap); } } } class NativeMethods { [DllImport("kernel32.dll", SetLastError = true)] public static extern bool SetConsoleIcon(IntPtr hIcon); } - Na konec napíšeme do
Main()kód, který ikonku ke konzolové aplikaci přidá:CSHARPConsole.Title = "Konzolova aplikace s logem MS"; //-tempConsoleWithoutSwf je jmenem assembly volajiciho kodu(pokud zdejsi pomocne tridy budou v jinem sestaveni)! ImageHelper.SetAssemblyNameForWpfApps("tempConsoleWithoutSwf"); ImageHelper.RegisterPackProtocol(); BitmapImage bi = BitmapImageHelper.MsAppx("LogoMicrosoft.png"); Bitmap logoBitmap = Pictures.BitmapImage2Bitmap(bi); NativeMethods.SetConsoleIcon(logoBitmap.GetHicon()); Console.WriteLine("Program dokoncil svou cinnost, kliknutim na enter jej ukoncite."); Console.ReadLine(); - Nyní už jen zbývá do rootu projektu přidat obrázkový soubor
LogoMicrosoft.png, ideálně ve čtvercové velikosti (zde bylo 50x50) a nastavit muBuild actionzContentnaResource. Výsledek vypadá pak nějak takto:
