using DocumentFormat.OpenXml.Wordprocessing; using KssSmaPlaLib.Ini; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Color = System.Drawing.Color; namespace KssSmaPlaLib.Forms { public static class ColorHelper { /// /// 色選択 /// /// /// /// /// public static Color? SelectColor(Form form, Color defaultColor, string iniKey = "") { using (ColorDialog cd = new ColorDialog()) { // 今の色を初期選択にしておく cd.Color = defaultColor; if (cd.ShowDialog(form) != DialogResult.OK) return null; if (!string.IsNullOrEmpty(iniKey)) { // 2. 🔥 Colorを16進数(#RRGGBB)に変換してINIに書き込み string colorHex = ColorTranslator.ToHtml(cd.Color); IniHelper.WriteValue(null, form.Name, iniKey, colorHex); } return cd.Color; } } /// /// Colorを汎用的なHTML色コード文字列に変換する /// /// /// public static string ColorToHtmlColorString(Color color) { return ColorTranslator.ToHtml(color); } /// /// 汎用的なHTML色コード文字列からColorに変換する /// /// /// public static Color HtmlColorStringToColor(string htmlColorString) { return ColorTranslator.FromHtml(htmlColorString); } /// /// 背景色から最適な文字色(黒/白)を返すメソッド /// /// /// public static Color GetContrastColor(Color backColor) { // 輝度計算 (ITU-R BT.601) double luminance = (0.299 * backColor.R) + (0.587 * backColor.G) + (0.114 * backColor.B); return (luminance > 128) ? Color.Black : Color.White; } } }