2017-07-28 3 views
0

Nicht zu sicher bin ich dumm. Wie lautet der Aufruf des Web-Farbpaletten-Widgets? Der Colordialog bringt einen weiteren Picker auf die nicht das, was ich wollteWeb Farbpalette Winform

Web Color Palette

Ich sehe, obwohl die Bahn aber die meisten der Palette nicht über die Web-Picker. Vielen Dank im Voraus [Bearbeitet: Vielleicht sollte ich die Frage neu formulieren, wie bringe ich die oben genannten Farbauswahl? Ich wünsche keine 3rd-Party-Widget mit Ausnahme derjenigen verwenden, die in VS bereits verfügbar sind]

+0

ich glaube, ich mit dem Widget „ColorListBox“ umgehen könnte unter der sich Namensraum ActiproSoftware.WinUICore. Es scheint von Blend zu kommen.BTW ist Mischung 3rd Party oder von Windows? – ishtarsg

Antwort

-1

Sie rgb Farben

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

Aber ich möchte die GUI, die die unterschiedliche Farbe für den Benutzer zur Auswahl während der Laufzeit zeigt. – ishtarsg

2

verwenden kann ich jemand hoffen, kommt mit einer Out-of-the-Box auf .Net Lösung.

Wenn nicht, können Sie Ihre eigenen schreiben; dies ist eine für den Anfang ..:

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(); 
    } 
} 

Sie Sortieroptionen hinzufügen und die orderby Klauseln wechseln ..