2017-07-28 66 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(); 
    } 
} 

您可以添加排序選項和開關的排序依據的條款..