Setting CustomColors in a ColorDialog

Custom color set in the color dialog are supposed to be set to {Blue, Blue} using the following code:

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

But, I am getting a different set {Black, Blue}:

Any idea What I am doing wrong here? Thanks.

Answers


You need to use OLE colors. The simplist way to achieve this is using the built in ColorTranslator object, e.g.

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

If you need to convert from HTML colors, you can also use the ColorTranslator.FromHtml method, e.g.

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

If you use ColorTranslator FromArgb, you can keep RGB colors in their proper order. For example, ColorTranslator.ToOle(Color.FromArgb(255, 0, 0)), is red. You can also use this to set colors that don't have a name, for example, the bright red ColorTranslator.ToOle(Color.FromArgb(255, 31, 33)),.


Need Your Help

How do I properly map a `MagImageScalingCallback` using JNA?

java pointers winapi jna

I am using jna.jar, jna-3.2.5.jar and jna-3.3.0-platform.jar in my Java Project.