Heim  >  Artikel  >  Backend-Entwicklung  >  Selbststudium C#01 ab 0 – Selbstgezeichneter Formularrand

Selbststudium C#01 ab 0 – Selbstgezeichneter Formularrand

黄舟
黄舟Original
2017-02-04 10:29:052444Durchsuche

Führt hauptsächlich das allmähliche Aufhellen (Abdunkeln) von selbst gezeichneten Formularrändern und Hintergrundfarben ein.

1. Stellen Sie das Formular zunächst auf den randlosen Modus ein.

this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;

Sie können auch mit der rechten Maustaste auf das Formular klicken, „Eigenschaften“ auswählen, „FormBorderStyler“ suchen und es auf „Keine“ setzen. Zu diesem Zeitpunkt verschwinden die Schaltflächen zum Minimieren, Maximieren und Schließen in der oberen rechten Ecke des Formulars und die Funktion zum Ziehen des Formulars mit der Maus wird ebenfalls in Schritt 4 hinzugefügt.

2. Zeichnen Sie den Rahmen

Wählen Sie das aktuelle Projekt aus, klicken Sie mit der rechten Maustaste, fügen Sie eine Komponente hinzu, lassen Sie die Komponentenklasse Component1 die Panel-Klasse erben und überschreiben Sie dann OnPaint(PaintEventArgs e), um zu zeichnen die Randfarbe. Generieren Sie eine Lösung und die Komponente wird automatisch zur Toolbox unter der Komponentenspalte hinzugefügt. Der Klassencode lautet wie folgt:

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) legt die Rahmenfarbe fest, 2 legt die Rahmengröße fest.
Hinweis: Wenn Sie nicht wissen, welchen RGB-Wert Sie einstellen müssen, damit die Farbe gut aussieht. Sie können online einen Bildschirmfarbwähler herunterladen und den RBG-Wert der Farbe auslesen, die Ihrer Meinung nach gut aussieht.

3. Fügen Sie einen Rahmen hinzu

Fügen Sie die Komponente Component1 zum Formular hinzu und setzen Sie deren Dock-Eigenschaft auf „Füllung“. Setzen Sie dann die Padding-Eigenschaft auf 2, 2, 2, 2 (entsprechend der Rahmengröße). Es kann auch dynamisch implementiert werden:

this.component11.Dock = System.Windows.Forms.DockStyle.Fill;
this.component11.Padding = new System.Windows.Forms.Padding(2);

4. Fügen Sie in der Formularkomponente this.Component11 die Funktionen „Formular schließen“, „Minimieren“ und „Mausziehen“ hinzu und legen Sie die Dock-Eigenschaft auf „Oben“, die benutzerdefinierte Hintergrundfarbe auf 0, 102, 171 und die Vordergrundfarbe auf „Transparent“ fest.

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;


Fügen Sie dann zwei Beschriftungen im Panel hinzu und setzen Sie deren Text auf __ bzw. X für die Minimierungs- und Maximierungssymbole. Die Schriftarteinstellungen sind Microsoft YaHei, Fett und Kleingröße 5. Fügen Sie abschließend die Ereignisse MouseDown und MouseMove zum Panel hinzu. Fügen Sie der Beschriftung ein Click-Ereignis sowie die Ereignisse MouseEnter und MouseLeave hinzu, sodass sich die Maus in die Form einer Hand verwandelt, wenn sich die Maus über das Symbol bewegt.

5. Stellen Sie die Hintergrundfarbe des Panels so ein, dass sie allmählich verblasst.
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;
        }

Fügen Sie ein Paint-Ereignis zum Panel hinzu.

Das Obige ist der Inhalt des Selbststudiums C#01 von 0 – selbstgezeichneter Formularrand. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn). !
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++;
            }        
        }

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn