2017-07-28 127 views
0

不太确定我是否愚蠢。什么是网页调色板小部件调用?该ColorDialog类带来了另一个选择器这不是我想要的Web调色板Winform

Web Color Palette

我看虽然网站,但大部分的调色板没有网络选择器。 在此先感谢 [编辑:也许我应该改写这个问题,我如何提出上述颜色选择器?我不希望使用任何第三方插件,除了那些已经可以在VS]

+0

我想我可以与微件“ColorListBox”位于下得到解决命名空间ActiproSoftware.WinUICore。它似乎来自Blend.BTW是混合第三方或从窗口? – ishtarsg

回答

-1

您可以使用RGB颜色

your_object_here.BackColor = Color.FromArgb(255, 210, 210); 
your_object_here.ForeColor = Color.FromArgb(255,255,255); 
+0

但我想要的GUI显示不同的颜色供用户在运行时选择。 – ishtarsg

2

我希望有人来了外的箱子的净解。

如果没有,你可以自己写;这是一个对于初学者..:

enter image description here

public partial class WebColors : Form 
{ 
    public WebColors() 
    { 
     InitializeComponent(); 
    } 

    public Color pick { get; set; } 

    private void WebColors_Load(object sender, EventArgs e) 
    { 
     var webColors = 
      Enum.GetValues(typeof(KnownColor)) 
      .Cast<KnownColor>() 
      .Where(k => k >= KnownColor.Transparent && k < KnownColor.ButtonFace) 
      .Select(k => Color.FromKnownColor(k)) 
      .OrderBy(c => c.GetHue()) 
      .ThenBy(c => c.GetSaturation()) 
      .ThenBy(c => c.GetBrightness()).ToList(); 

     int cc = webColors.Count; 
     int n = (int)Math.Sqrt(cc) + 0; 
     int w = ClientSize.Width/(n) - 1; 
     Height = (n+1) * w + 90; 
     for (int i = 0; i < cc; i++) 
     { 
      Label lbl = new Label(); 
      lbl.Text = ""; 
      lbl.AutoSize = false; 
      lbl.Size = new Size(w - 1, w - 1); 
      lbl.BackColor = webColors[i]; 
      lbl.BorderStyle = BorderStyle.FixedSingle; 
      lbl.Location = new Point(1 + w * (i % (n+ 1)) , w * (i/(n+1))); 
      lbl.Click += (ss, ee) => 
      { 
       pick = lbl.BackColor; 
       lbl_colorName.Text = pick.Name; 
      }; 
      Controls.Add(lbl); 
     } 

    } 

    private void cb_ok_Click(object sender, EventArgs e) 
    { 
     this.DialogResult = DialogResult.OK; 
     this.Close(); 
    } 

    private void cb_cancel_Click(object sender, EventArgs e) 
    { 
     this.Close(); 
    } 
} 

您可以添加排序选项和开关的排序依据的条款..