ColorDialogクラスのCustomColorsプロパティが期待通りに動作しない。
フォームの背景色をColor.FromArgb(50, 100, 150)に設定している。ちなみにこんな色。
ボタンがクリックされるとColorDialogのCustomColorsプロパティにColor.FromArgb(50, 100, 150)を設定して表示する。
おかしい、追加した色が黒く表示されている。色の作成ボタンを押してRGB値を見てみると
RとBが反転している。これは困った。
using System; using System.Drawing; using System.Windows.Forms; public partial class Form1 :Form { Color color = Color.FromArgb(50, 100, 150); public Form1() { InitializeComponent(); this.BackColor = color; } private void button1_Click(object sender, EventArgs e) { this.colorDialog1.CustomColors = new int[] { color.ToArgb() }; this.colorDialog1.ShowDialog(); } }
ここに解決策があった。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=14475&forum=7
ToArgbではなくColorTranslator.ToWin32()を使えばいいとのこと。これで期待通りに動作した。
めでたしめでたし。