Темная тема на WinForms - C#
Формулировка задачи:
Народ! Есть у кого-нибудь опыт построение GUI на WinForms с тёмной темой?
Интересует GUI на WinForms со следующими контролами:
- Form
- GroupBox
- Label
- TextBox
- PropertyGrid
- MainMenu
- Button
- LinkLabel
- ComboBox
- CheckBox
- Label
- TextBox
- LinkLabel
- Бордюры окна и заголовок окна - можно ли поменять это малой кровью без сторонних тяжеловесных, тормознутых и кривых библиотек?
- Поменять цветовое оформление PropertyGrid так, что бы он не смотрелся чужеродно?
Решение задачи: «Темная тема на WinForms»
textual
Листинг программы
/// <summary> /// Метод возвращения курсора в исходное состояние /// </summary> /// <param name="CursorOwner">форма, для которой изменяется курсор</param> public static void CreateNormalCursor(Form CursorOwner) { try { if (CursorOwner.InvokeRequired) CursorOwner.BeginInvoke(new MethodInvoker(() => CursorOwner.Cursor = Cursors.Arrow)); else CursorOwner.Cursor = Cursors.Arrow; } catch { } } /// <summary> /// Метод преобразования курсора в силуэт формы /// </summary> /// <param name="CursorOwner">форма, для которой изменяется курсор</param> public static void CreateDragCursor(Form CursorOwner) { try { Bitmap bitmap = null; bitmap = new Bitmap(CursorOwner.Width, CursorOwner.Height); for (int x = 0; x < CursorOwner.Width; x++) { bitmap.SetPixel(x, 0, Color.Black); bitmap.SetPixel(x, CursorOwner.Height - 1, Color.Black); } for (int y = 0; y < CursorOwner.Height; y++) { bitmap.SetPixel(0, y, Color.Black); bitmap.SetPixel(CursorOwner.Width - 1, y, Color.Black); } System.Windows.Forms.Cursor nowCur = CreateCursor(bitmap, 3, 3); if (CursorOwner.InvokeRequired) CursorOwner.BeginInvoke(new MethodInvoker(() => CursorOwner.Cursor = nowCur)); else CursorOwner.Cursor = nowCur; bitmap.Dispose(); } catch { } } // API структура для изменения курсора private struct IconInfo { public bool fIcon; public int xHotspot; public int yHotspot; public IntPtr hbmMask; public IntPtr hbmColor; } // API метод для изменения курсора [DllImport("user32.dll")] private static extern IntPtr CreateIconIndirect(ref IconInfo icon); // API метод для изменения курсора [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool GetIconInfo(IntPtr hIcon, ref IconInfo pIconInfo); // API метод для изменения курсора private static System.Windows.Forms.Cursor CreateCursor(Bitmap bmp, int xHotSpot, int yHotSpot) { IconInfo tmp = new IconInfo(); GetIconInfo(bmp.GetHicon(), ref tmp); tmp.xHotspot = xHotSpot; tmp.yHotspot = yHotSpot; tmp.fIcon = false; return new System.Windows.Forms.Cursor(CreateIconIndirect(ref tmp)); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д