Heim >Backend-Entwicklung >C++ >Wie kann ich meiner C#-Konsolenanwendung benutzerdefinierte Farben wie Orange hinzufügen?
Benutzerdefinierte Farben in C#-Konsolenanwendungen
In C#-Konsolenanwendungen ist die Möglichkeit, Schriftfarben über die Standardkonsolenfarben hinaus anzupassen, eine wertvolle Funktion . Leider ist die Liste der verfügbaren Farben begrenzt und es fehlt die gewünschte orange Farbe.
Verfügbare Optionen für benutzerdefinierte Farben
Während die bereitgestellte Farbliste der offiziell unterstützte Satz ist Über die Konsole gibt es eine Möglichkeit, benutzerdefinierte Farben zu erreichen:
Konsolenfarben programmgesteuert ändern
Sobald Sie eine Methode ausgewählt haben Für benutzerdefinierte Farbunterstützung können Sie Farbänderungen in Ihrem C#-Programm implementieren:
Externe Bibliothek Methode:
PINVOKE Methode:
Spezifische Implementierung mit PINVOKE
Das bereitgestellte Codefragment zeigt, wie die PINVOKE-Methode zum Festlegen benutzerdefinierter Farben verwendet wird, einschließlich 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(); } }
Mit dieser Methode können Sie jede gewünschte Farbe einstellen, einschließlich Orange als Vordergrund- oder Hintergrundfarbe der Konsole, was eine reichhaltigere und anpassbare Benutzererfahrung in Ihren C#-Konsolenanwendungen bietet.
Das obige ist der detaillierte Inhalt vonWie kann ich meiner C#-Konsolenanwendung benutzerdefinierte Farben wie Orange hinzufügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!