75 lines
2.4 KiB
C#
75 lines
2.4 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// 色選択
|
|
/// </summary>
|
|
/// <param name="form"></param>
|
|
/// <param name="defaultColor"></param>
|
|
/// <param name="iniKey"></param>
|
|
/// <returns></returns>
|
|
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;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Colorを汎用的なHTML色コード文字列に変換する
|
|
/// </summary>
|
|
/// <param name="color"></param>
|
|
/// <returns></returns>
|
|
public static string ColorToHtmlColorString(Color color)
|
|
{
|
|
return ColorTranslator.ToHtml(color);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 汎用的なHTML色コード文字列からColorに変換する
|
|
/// </summary>
|
|
/// <param name="htmlColorString"></param>
|
|
/// <returns></returns>
|
|
public static Color HtmlColorStringToColor(string htmlColorString)
|
|
{
|
|
return ColorTranslator.FromHtml(htmlColorString);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 背景色から最適な文字色(黒/白)を返すメソッド
|
|
/// </summary>
|
|
/// <param name="backColor"></param>
|
|
/// <returns></returns>
|
|
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;
|
|
}
|
|
}
|
|
}
|