在ColorDialog中设置CustomColors

颜色对话框中的自定义颜色集应使用以下代码设置为{Blue,Blue}:

colorDialog1.CustomColors = new int[] { System.Drawing.Color.Blue.ToArgb(), 0xFF0000 }; colorDialog1.ShowDialog(); 

但是,我得到了另一套{Black,Blue}:

在此处输入图像描述

不知道我在这里做错了什么? 谢谢。

您需要使用OLE颜色 。 实现此目的的简单方法是使用内置的ColorTranslator对象,例如

 colorDialog1.CustomColors = new int[] { ColorTranslator.ToOle(Color.Blue), ColorTranslator.ToOle(Color.Red) }; colorDialog1.ShowDialog(); 

如果需要从HTML颜色转换,也可以使用ColorTranslator.FromHtml方法,例如

 colorDialog1.CustomColors = new int[] { ColorTranslator.ToOle(Color.Blue), ColorTranslator.ToOle(ColorTranslator.FromHtml("#FF0000")) }; 

如果使用ColorTranslator FromArgb,则可以保持RGB颜色的正确顺序。 例如,ColorTranslator.ToOle(Color.FromArgb(255,0,0))为红色。 您也可以使用它来设置没有名称的颜色,例如,亮红色ColorTranslator.ToOle(Color.FromArgb(255,31,33))。