Setting CustomColors in a ColorDialog

前端 未结 3 1266
花落未央
花落未央 2021-02-19 17:48

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.Colo         


        
相关标签:
3条回答
  • 2021-02-19 18:13

    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)),.

    0 讨论(0)
  • 2021-02-19 18:22

    If you have an array of colors, you can translate them using Linq:

    colorDialog1.CustomColors = ThemeColors.Select(x => ColorTranslator.ToOle(x)).ToArray()
    

    The ThemeColors array would be something like this:

    public static Color[] ThemeColors
    {
       get => new[]
       {
          Color.FromArgb(255, 185, 0),
          Color.FromArgb(231, 72, 86),
          Color.FromArgb(0, 120, 215),
          Color.FromArgb(0, 153, 188),
          Color.DarkOrange
       }
    }
    

    Note: Don't forget to add:

    using System.Linq;
    
    0 讨论(0)
  • 2021-02-19 18:25

    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"))
                                    };
    
    0 讨论(0)
提交回复
热议问题