Known Colors
/* Professional Windows GUI Programming Using C# by Jay Glynn, Csaba Torok, Richard Conway, Wahid Choudhury, Zach Greenvoss, Shripad Kulkarni, Neil Whitlow Publisher: Peer Information ISBN: 1861007663 */ using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace KnownColors { /// <summary> /// Summary description for KnownColors. /// </summary> public class KnownColors : System.Windows.Forms.Form { private System.Windows.Forms.ComboBox comboBox1; /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.Container components = null; ArrayList cAL; ArrayList cNAL; public KnownColors() { // // Required for Windows Form Designer support // InitializeComponent(); this.Text = "Known non-system colors"; cAL = new ArrayList(); // colors cNAL = new ArrayList(); // strings NonSystemColors(cAL, cNAL); this.comboBox1.Sorted = true; this.comboBox1.DataSource = cNAL; //set the combo's data source // // TODO: Add any constructor code after InitializeComponent call // } /// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.comboBox1 = new System.Windows.Forms.ComboBox(); this.SuspendLayout(); // // comboBox1 // this.comboBox1.Location = new System.Drawing.Point(8, 8); this.comboBox1.Name = "comboBox1"; this.comboBox1.Size = new System.Drawing.Size(121, 21); this.comboBox1.TabIndex = 0; this.comboBox1.Text = "comboBox1"; // // KnownColors // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(292, 266); this.Controls.AddRange(new System.Windows.Forms.Control[] { this.comboBox1}); this.Name = "KnownColors"; this.Text = "KnownColors"; this.ResumeLayout(false); } #endregion /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.Run(new KnownColors()); } private void NonSystemColors(ArrayList cAL, ArrayList cNAL) { Array cA = Enum.GetValues(typeof(KnownColor)); foreach(KnownColor knwnC in cA) // cX.Length = 167 { Color curC = Color.FromKnownColor(knwnC); if(!curC.IsSystemColor) { cAL.Add(curC); cNAL.Add(curC.Name.ToString()); } } } protected override void OnPaint(PaintEventArgs pea) { Graphics g = pea.Graphics; int wi = 70, hi = 12, rectNb = 8; int cALNb = cAL.Count; this.Width = (wi +2)*rectNb + 9; int y = (int)(cALNb / rectNb); this.Height = y*(2 + hi) + 60; DisplayKnownColors(g, cALNb, wi, hi, rectNb); g.Dispose(); } private void DisplayKnownColors(Graphics g, int cALNb, int wi, int hi, int rectNb) { Rectangle rec; Pen p = new Pen(this.ForeColor); Brush b; StringFormat strfmt = new StringFormat(); strfmt.LineAlignment = strfmt.Alignment = StringAlignment.Near; int x, y; for (int i = 0; i < cALNb; i++) { x = (int)(i % rectNb); y = (int)(i / rectNb); rec = new Rectangle(1 + x*(2 + wi), 1 + y*(2 + hi), wi, hi); g.DrawRectangle(p, rec); b = new SolidBrush((Color)cAL[i]); g.FillRectangle(b, rec); b = new SolidBrush(Color.Black); g.DrawString((string)cNAL[i], this.Font, b, rec, strfmt); } x = (int)(cALNb % rectNb); y = (int)(cALNb / rectNb); this.comboBox1.Location = new Point(x*(wi + 2) + 2, y*(2 + hi) + 2); } } }