從0自學C#01–自繪表單邊框

來源:互聯網
上載者:User
主要介紹自繪表單邊框和背景顏色逐級變淺(深)。

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)!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.