C# コンソール アプリケーションのカスタム カラー
C# コンソール アプリケーションでは、デフォルトのコンソール カラーを超えてフォントの色をカスタマイズできる機能は貴重な機能です。残念ながら、利用可能な色のリストは限られており、目的のオレンジ色がありません。
カスタム カラーの利用可能なオプション
提供されている色のリストは、サポートされている公式セットです。コンソールでカスタム カラーを実現する方法があります:
プログラムによるコンソールの色の変更
方法を選択したらカスタム カラーのサポートについては、C# で色の変更を実装できます。プログラム:
外部ライブラリ メソッド:
PINVOKE メソッド:
PINVOKE を使用した特定の実装
提供されたコードスニペットは、PINVOKE メソッドを使用してカスタム カラーを設定する方法を示しています。オレンジを含む:
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(); } }
このメソッドを使用すると、オレンジを含む任意の色をコンソールの前景色または背景色として設定でき、C# コンソール アプリケーションでより豊かでカスタマイズ可能なユーザー エクスペリエンスを提供できます。
以上がオレンジなどのカスタム色を C# コンソール アプリケーションに追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。