主要介紹自繪表單邊框和背景顏色逐級變淺(深)。
1.先設定表單為無邊框模式
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
也可以右擊表單,選擇屬性,找到FormBorderStyler設定為None。此時表單右上方的最小化、最大化和關閉按鈕會消失,滑鼠拖動表單的功能也會消失,這些會在第4步添加。
2.繪製邊框
選擇當前項目右擊,添加組件,讓組件類Component1繼承Panel類,然後重寫OnPaint(PaintEventArgs e),繪製邊框顏色。產生解決方案,該組件會自動添加到工具箱裡,元件匣下。類代碼如下:
public partial class Component1 : Panel { public Component1() { InitializeComponent(); } public Component1(IContainer container) { container.Add(this); InitializeComponent(); } protected override void OnPaint(PaintEventArgs e) { ControlPaint.DrawBorder(e.Graphics, this.ClientRectangle, Color.FromArgb(00,59,96), 2, ButtonBorderStyle.Solid, Color.FromArgb(00,59,96), 2, ButtonBorderStyle.Solid, Color.FromArgb(00,59,96), 2, ButtonBorderStyle.Solid, Color.FromArgb(00,59,96), 2, ButtonBorderStyle.Solid); base.OnPaint(e); } }
Color.FromArgb(00,59,96)設定邊框顏色,2設定邊框尺寸。
註:如果不知道設定什麼rgb值,使得顏色好看。可以去網上下載一個螢幕色彩選擇工具,讀出你認為好看顏色的rbg值。
3.添加邊框
將組件Component1添加到表單,設定其Dock屬性為Fill。然後設定Padding屬性為2,2,2,2(與邊框尺寸對應)。也可以動態實現,代碼如下:
this.component11.Dock = System.Windows.Forms.DockStyle.Fill;this.component11.Padding = new System.Windows.Forms.Padding(2);
4.添加表單關閉、最小化,滑鼠拖動功能
在表單組件this.Component11上,添加Panel,設定其Dock屬性為Top,自訂背景顏色為0,102,171,前景色彩為Transparent。
this.panel1.Dock = System.Windows.Forms.DockStyle.Top;this.panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(102)))), ((int)(((byte)(171)))));this.panel1.ForeColor = System.Drawing.Color.Transparent;
然後在Pannel上添加兩個label,設定其Text分別為__和X,為最小化和最大化表徵圖。字型設定為微軟雅黑、粗體、小五號。最後給Pannel添加MouseDown和MouseMove事件。給label添加Click事件,添加MouseEnter和MouseLeave事件,使得滑鼠移動到表徵圖上時,滑鼠變為手型。
Point mouseOffSet;private void panel1_MouseDown(object sender, MouseEventArgs e) { mouseOffSet = new Point(-e.X, -e.Y); }private void panel1_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { Point mousePosition = Control.MousePosition; mousePosition.Offset(mouseOffSet.X, mouseOffSet.Y); Location = mousePosition; } }private void labelMinimize_Click(object sender, EventArgs e) { this.WindowState = FormWindowState.Minimized; }private void labelClose_Click(object sender, EventArgs e) { this.Close(); this.Dispose(); Application.Exit(); }private void labelMinimize_MouseEnter(object sender, EventArgs e) { this.Cursor = Cursors.Hand; }private void labelMinimize_MouseLeave(object sender, EventArgs e) { this.Cursor = Cursors.Default; }private void labelClose_MouseEnter(object sender, EventArgs e) { this.Cursor = Cursors.Hand; }private void labelClose_MouseLeave(object sender, EventArgs e) { this.Cursor = Cursors.Default; }
5.Panel背景色設定為逐級變淡
給Pannel添加Paint事件。
private void panel1_Paint(object sender, PaintEventArgs e) { int y, dy; y = this.panel1.ClientRectangle.Location.Y; dy = this.panel1.ClientRectangle.Height / 90; for (int i = 0; i <= 89;i++ ) { Color c = new Color(); //調用Color對象的FromArgb方法 c = Color.FromArgb(50, i + 50, i + 120);//0,102,171 SolidBrush sb = new SolidBrush(c); Pen p = new Pen(sb, 1); //繪製矩形 e.Graphics.DrawRectangle(p, this.panel1.ClientRectangle.X, y, this.Width, y + dy); y = y + dy; //i++; } }
以上就是從0自學C#01–自繪表單邊框的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!