Maison >développement back-end >C++ >Comment puis-je ajouter des couleurs personnalisées, comme l'orange, à mon application console C# ?
Couleurs personnalisées dans les applications de console C#
Dans les applications de console C#, la possibilité de personnaliser les couleurs de police au-delà des couleurs par défaut de la console est une fonctionnalité précieuse . Malheureusement, la liste des couleurs disponibles est limitée, il manque la couleur orange souhaitée.
Options disponibles pour les couleurs personnalisées
Bien que la liste de couleurs fournie soit l'ensemble officiel pris en charge par la console, il existe un moyen d'obtenir des couleurs personnalisées :
Modification des couleurs de la console par programmation
Une fois que vous avez choisi une méthode pour une prise en charge des couleurs personnalisées, vous pouvez implémenter des changements de couleur dans votre programme C# :
Bibliothèque externe Méthode :
PINVOKE Méthode :
Implémentation spécifique à l'aide de PINVOKE
L'extrait de code fourni montre comment utiliser la méthode PINVOKE pour définir des couleurs personnalisées, notamment orange :
using System; using System.Drawing; using System.Runtime.InteropServices; public class CustomConsoleColors { [DllImport("kernel32.dll", SetLastError = true)] private static extern bool SetConsoleScreenBufferInfoEx(IntPtr hConsoleOutput, ref CONSOLE_SCREEN_BUFFER_INFO_EX csbe); [StructLayout(LayoutKind.Sequential)] private struct COORD { public short X; public short Y; } [StructLayout(LayoutKind.Sequential)] private struct SMALL_RECT { public short Left; public short Top; public short Right; public short Bottom; } [StructLayout(LayoutKind.Sequential)] private struct CONSOLE_SCREEN_BUFFER_INFO_EX { public int cbSize; public COORD dwSize; public COORD dwCursorPosition; public ushort wAttributes; public SMALL_RECT srWindow; public COORD dwMaximumWindowSize; public ushort wPopupAttributes; public bool bFullscreenSupported; public uint black; public uint darkBlue; public uint darkGreen; public uint darkCyan; public uint darkRed; public uint darkMagenta; public uint darkYellow; public uint gray; public uint darkGray; public uint blue; public uint green; public uint cyan; public uint red; public uint magenta; public uint yellow; public uint white; } public static void SetColor(ConsoleColor color, Color targetColor) { CONSOLE_SCREEN_BUFFER_INFO_EX csbe = new CONSOLE_SCREEN_BUFFER_INFO_EX(); csbe.cbSize = Marshal.SizeOf(csbe); IntPtr hConsoleOutput = GetStdHandle(-11); if (hConsoleOutput == new IntPtr(-1)) throw new Exception("Error retrieving console buffer handle"); if (!GetConsoleScreenBufferInfoEx(hConsoleOutput, ref csbe)) throw new Exception("Error retrieving console buffer info"); switch (color) { case ConsoleColor.Black: csbe.black = ColorTranslator.ToWin32(targetColor); break; case ConsoleColor.DarkBlue: csbe.darkBlue = ColorTranslator.ToWin32(targetColor); break; // ... (similar code for other colors) case ConsoleColor.DarkYellow: csbe.darkYellow = ColorTranslator.ToWin32(targetColor); break; case ConsoleColor.Gray: csbe.gray = ColorTranslator.ToWin32(targetColor); break; // ... (similar code for other colors) case ConsoleColor.White: csbe.white = ColorTranslator.ToWin32(targetColor); break; } if (!SetConsoleScreenBufferInfoEx(hConsoleOutput, ref csbe)) throw new Exception("Error setting console buffer info"); } public static void Main() { SetColor(ConsoleColor.DarkYellow, Color.Orange); Console.WriteLine("Custom orange color applied!"); Console.ReadLine(); } }
En utilisant cette méthode, vous pouvez définir n'importe quel couleur, y compris l'orange, comme couleur de premier plan ou d'arrière-plan de la console, offrant une expérience utilisateur plus riche et personnalisable dans vos applications de console C#.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!