Menggunakan Acara Cat untuk Melukis Bentuk pada Koordinat Tetikus
Apabila membangunkan aplikasi GUI, selalunya perlu melukis bentuk pada skrin. Satu cara untuk melakukan ini ialah menggunakan acara Cat, yang dinaikkan apabila sebahagian permukaan kawalan perlu dilukis semula.
Melukis Segi Empat
Dalam contoh kod yang disediakan, matlamatnya adalah untuk melukis segi empat tepat pada koordinat penuding tetikus. Untuk mencapai ini, kaedah DrawRect() digunakan. Kaedah ini mengambil koordinat tetikus dan objek PaintEventArgs sebagai argumen.
Mengubah suai Kod
Untuk memasukkan koordinat tetikus dalam acara Paint, kod tersebut perlu diubah suai sebagai berikut:
Tambah hujah MouseCoordinates ke PaintEvent:
private void Form1_Paint(object sender, PaintEventArgs e, Point mouseCoordinates) { }
Panggil Fungsi Lukisan:
Dalam pengendali acara Paint, panggil kaedah DrawRect() dengan koordinat tetikus yang disediakan dan PaintEventArgs objek:
this.DrawRect(e, mouseCoordinates.X, mouseCoordinates.Y);
Kod Lengkap
Kod lengkap selepas pengubahsuaian:
using System; using System.Drawing; using System.Windows.Forms; public partial class Form1 : Form { public void Form1_MouseMove(object sender, MouseEventArgs e) { int x = e.X; int y = e.Y; Point mouseCoord = new Point(x, y); } private void Form1_Paint(object sender, PaintEventArgs e, Point mouseCoord) { this.DrawRect(e, mouseCoord.X, mouseCoord.Y); } public void DrawRect(PaintEventArgs e, int x, int y) { Graphics gr = e.Graphics; Pen pen = new Pen(Color.Azure, 4); Rectangle rect = new Rectangle(0, 0, x, y); gr.DrawRectangle(pen, rect); } }
Tambahan Pertimbangan
Apabila melukis pada permukaan kawalan, sentiasa gunakan Cat acara atau ganti kaedah OnPaint. Jangan simpan objek Grafik, kerana ia menjadi tidak sah apabila kawalan dicat semula. Sebaliknya, gunakan objek Grafik yang disediakan oleh objek PaintEventArgs.
Sumber tambahan untuk melukis bentuk dalam C# termasuk:
Atas ialah kandungan terperinci Bagaimana untuk Melukis Segi Empat pada Koordinat Tetikus Menggunakan Acara C# Paint?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!