/* Code revised from chapter 3 GDI+ Custom Controls with Visual C# 2005 By Iulian Serban, Dragos Brezoi, Tiberiu Radu, Adam Ward Language English Paperback 272 pages [191mm x 235mm] Release date July 2006 ISBN 1904811604 Sample chapter http://international.us.server12.fileserver.kutayzorlu.com/files/download/2017/01/1604_CustomControls_SampleChapter_uuid-6297319b-9374-4099-b18c-41b668f47669_crc-0.pdf For More info on GDI+ Custom Control with Microsoft Visual C# book visit website www.packtpub.com */ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Drawing.Drawing2D; namespace GradientLabelTest00 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private System.ComponentModel.IContainer components = null; protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code private void InitializeComponent() { this.gradientLabel1 = new GradientLabelTest00.GradientLabel(); this.SuspendLayout(); this.gradientLabel1.BackColor = System.Drawing.SystemColors.ControlLight; this.gradientLabel1.BackColor2 = System.Drawing.SystemColors.ControlDarkDark; this.gradientLabel1.ForeColor = System.Drawing.SystemColors.ActiveCaption; this.gradientLabel1.Location = new System.Drawing.Point(66, 68); this.gradientLabel1.Name = "gradientLabel1"; this.gradientLabel1.Size = new System.Drawing.Size(150, 47); this.gradientLabel1.TabIndex = 0; this.gradientLabel1.Text = "Gradient Label"; // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(292, 266); this.Controls.Add(this.gradientLabel1); this.Name = "Form1"; this.Text = "Form1"; this.ResumeLayout(false); } #endregion private GradientLabel gradientLabel1; /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } public partial class GradientLabel : Control { private Color backColor2 = SystemColors.ControlLight; public GradientLabel() { InitializeComponent(); } public Color BackColor2 { get { return backColor2; } set { if (backColor2 != value) { backColor2 = value; Invalidate(); } } } private void GradientLabel_Paint(object sender, PaintEventArgs e) { } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); LinearGradientBrush brush = new LinearGradientBrush(new Point(0, 0), new Point(0, Height), BackColor, BackColor2); e.Graphics.FillRectangle(brush, ClientRectangle); Brush foreBrush = new SolidBrush(ForeColor); SizeF textSize = e.Graphics.MeasureString(Text, Font); e.Graphics.DrawString(Text, Font, foreBrush, (Width - textSize.Width) / 2, (Height - textSize.Height) / 2); brush.Dispose(); foreBrush.Dispose(); } private System.ComponentModel.IContainer components = null; protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Component Designer generated code private void InitializeComponent() { this.SuspendLayout(); this.BackColor = System.Drawing.SystemColors.ControlDarkDark; this.ForeColor = System.Drawing.SystemColors.HotTrack; this.Size = new System.Drawing.Size(150, 24); this.Text = "Gradient Label"; this.Paint += new System.Windows.Forms.PaintEventHandler(this.GradientLabel_Paint); this.ResumeLayout(false); } #endregion } }