Cara: Menyalin Piksel untuk Mengurangi Kedinginan di Formulir Windows
Ketika Anda menganimasikan grafik sederhana, pengguna kadang-kadang dapat menemukan berkedot atau efek visual lain yang tidak diinginkan. Salah satu cara untuk membatasi masalah ini adalah dengan menggunakan proses "bitblt" pada grafik. Bitblt adalah "transfer bit-block" data warna dari persegi panjang asal piksel ke persegi panjang tujuan piksel.
Dengan Formulir Windows, bitblt dicapai menggunakan CopyFromScreen metode Graphics kelas . Dalam parameter metode , Anda menentukan sumber dan tujuan (sebagai titik), ukuran area yang akan disalin, dan objek grafis yang digunakan untuk menggambar bentuk baru.
Dalam contoh di bawah ini, bentuk digambar pada formulir dalam penanganan aktivitasnya Paint . Kemudian, CopyFromScreen metode ini digunakan untuk menduplikasi bentuk.
Catatan
Mengatur properti formulir DoubleBuffered ke true
akan membuat kode berbasis grafis dalam Paint peristiwa akan di-buffer ganda. Meskipun ini tidak akan memiliki keuntungan performa yang berbeda saat menggunakan kode di bawah ini, ini adalah sesuatu yang perlu diingat ketika bekerja dengan kode manipulasi grafis yang lebih kompleks.
Contoh
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
' Draw a circle with a bar on top.
e.Graphics.FillEllipse(Brushes.DarkBlue, New Rectangle _
(10, 10, 60, 60))
e.Graphics.FillRectangle(Brushes.Khaki, New Rectangle _
(20, 30, 60, 10))
' Copy the graphic to a new location.
e.Graphics.CopyFromScreen(New Point(10, 10), New Point _
(100, 100), New Size(70, 70))
End Sub
private void Form1_Paint(System.Object sender,
System.Windows.Forms.PaintEventArgs e)
{
e.Graphics.FillEllipse(Brushes.DarkBlue, new
Rectangle(10,10,60,60));
e.Graphics.FillRectangle(Brushes.Khaki, new
Rectangle(20,30,60,10));
e.Graphics.CopyFromScreen(new Point(10, 10), new Point(100, 100),
new Size(70, 70));
}
Mengompilasi Kode
Kode di atas dijalankan dalam penanganan aktivitas formulir Paint sehingga grafik tetap ada saat formulir digambar ulang. Dengan demikian, jangan memanggil metode terkait grafis di Load penanganan aktivitas, karena konten yang digambar tidak akan digambar ulang jika formulir diubah ukurannya atau dikaburkan oleh formulir lain.
Baca juga
.NET Desktop feedback
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk