GDI + Grafik dalam Visual Basic .NET Tutorial

GDI + adalah cara untuk menggambar bentuk, font, gambar atau gambar apa saja secara umum Dasar visual .BERSIH.

Artikel ini adalah bagian pertama dari pengantar lengkap untuk menggunakan GDI + di Visual Basic .NET.

GDI + adalah bagian yang tidak biasa dari .NET. Itu di sini sebelum. NET (GDI + dirilis dengan Windows XP) dan tidak berbagi siklus pembaruan yang sama dengan .NET Framework. Dokumentasi Microsoft biasanya menyatakan bahwa Microsoft Windows GDI + adalah API untuk C / C ++ programmer ke OS Windows. Tapi GDI + juga termasuk ruang nama yang digunakan di VB.NET untuk pemrograman grafis berbasis perangkat lunak.

WPF

Tapi bukan itu hanya perangkat lunak grafis yang disediakan oleh Microsoft, terutama sejak Kerangka 3.0. Ketika Vista dan 3.0 diperkenalkan, WPF yang sama sekali baru diperkenalkan dengannya. WPF adalah pendekatan akselerasi perangkat keras tingkat tinggi untuk grafis. Seperti yang dikatakan Tim Cahill, anggota tim perangkat lunak Microsoft WPF, dengan WPF "Anda menggambarkan adegan Anda menggunakan konstruksi tingkat tinggi, dan kami akan khawatir tentang sisanya. "Dan fakta bahwa itu dipercepat perangkat keras berarti bahwa Anda tidak harus menyeret operasi prosesor menggambar bentuk pada layar. Sebagian besar pekerjaan nyata dilakukan oleh kartu grafis Anda.

instagram viewer

Kami sudah pernah ke sini sebelumnya. Setiap "lompatan ke depan" biasanya disertai dengan beberapa sandungan ke belakang, dan di samping itu, akan membutuhkan waktu bertahun-tahun bagi WPF untuk bekerja melalui zillions byte dari kode GDI +. Itu terutama benar karena WPF hanya berasumsi bahwa Anda bekerja dengan sistem bertenaga tinggi dengan banyak memori dan kartu grafis panas. Itu sebabnya banyak PC tidak bisa menjalankan Vista (atau setidaknya, menggunakan grafis "Aero" Vista) ketika pertama kali diperkenalkan. Jadi seri ini terus tersedia di situs untuk siapa saja dan semua yang masih perlu menggunakannya.

Kode Ol yang baik

GDI + bukan sesuatu yang bisa Anda seret ke formulir seperti komponen lain di VB.NET. Sebaliknya, objek GDI + umumnya harus ditambahkan dengan cara lama - dengan mengkodekannya dari awal! (Meskipun, VB. NET memang menyertakan sejumlah snipet kode yang sangat berguna yang benar-benar dapat membantu Anda.)

Untuk kode GDI +, Anda menggunakan objek dan anggota mereka dari sejumlah .NET namespaces. (Saat ini, ini sebenarnya hanya kode pembungkus untuk objek OS Windows yang benar-benar melakukan pekerjaan.)

Ruang nama

Namespaces di GDI + adalah:

Sistem. Gambar

Ini adalah itu core GDI + namespace. Ini mendefinisikan objek untuk rendering dasar (font, pena, kuas dasar, dll.) dan objek yang paling penting: Gambar. Kita akan melihat ini lebih banyak hanya dalam beberapa paragraf.

Sistem. Gambar. Drawing2D

Ini memberi Anda objek untuk grafik vektor dua dimensi yang lebih canggih. Beberapa di antaranya adalah kuas gradien, tutup pena, dan transformasi geometris.

Sistem. Gambar. Imaging

Jika Anda ingin mengubah gambar grafis - yaitu, ubah palet, ekstrak metadata gambar, memanipulasi metafile, dan sebagainya - ini adalah yang Anda butuhkan.

Sistem. Gambar. Pencetakan

Untuk membuat gambar ke halaman yang dicetak, berinteraksi dengan printer itu sendiri, dan memformat penampilan pekerjaan cetak secara keseluruhan, gunakan objek di sini.

Sistem. Gambar. Teks

Anda dapat menggunakan koleksi font dengan namespace ini.

Objek Grafik

Tempat untuk memulai dengan GDI + adalah Grafik obyek. Meskipun hal-hal yang Anda gambar muncul di monitor atau printer Anda, objek Grafik adalah "kanvas" yang Anda gambar.

Tetapi objek Grafik juga merupakan salah satu sumber kebingungan pertama saat menggunakan GDI +. Objek Grafik selalu dikaitkan dengan tertentu konteks perangkat. Jadi masalah pertama yang hampir setiap siswa baru GDI + hadapi adalah, "Bagaimana cara mendapatkan objek Grafik?"

Pada dasarnya ada dua cara:

  1. Anda dapat menggunakan e parameter peristiwa yang diteruskan ke OnPaint acara dengan PaintEventArgs obyek. Beberapa acara melewati PaintEventArgs dan Anda dapat menggunakan untuk merujuk ke objek Grafik yang sudah digunakan oleh konteks perangkat.
  2. Anda dapat menggunakan BuatGrafika metode untuk konteks perangkat untuk membuat objek Grafik.

Inilah contoh metode pertama:

Subdi atas Override Dilindungi (_. ByVal e As System. Windows. Formulir. PaintEventArgs) Dim g As Graphics = e. Grafik. g. DrawString ("Tentang Visual Basic" & vbCrLf _. & "dan GDI +" & vbCrLf & "A Great Team", _. Font Baru ("Times New Roman", 20), _. Sikat. Firebrick, 0, 0) MyBase. OnPaint (e) End Sub

Klik di sini untuk menampilkan ilustrasi

Tambahkan ini ke dalam kelas Form1 untuk Aplikasi Windows standar untuk mengkodekannya sendiri.

Dalam contoh ini, objek Grafik sudah dibuat untuk formulir Formulir1. Yang harus Anda lakukan adalah membuat instance lokal dari objek itu dan menggunakannya untuk menggambar pada form yang sama. Perhatikan bahwa kode Anda Mengganti itu OnPaint metode. Itu sebabnya MyBase. OnPaint (e) dieksekusi pada akhirnya. Anda perlu memastikan bahwa jika objek dasar (yang Anda timpa) melakukan sesuatu yang lain, ia mendapat kesempatan untuk melakukannya. Seringkali, kode Anda berfungsi tanpa ini, tetapi itu ide yang bagus.

PaintEventArgs

Anda juga bisa mendapatkan objek Grafik menggunakan PaintEventArgs objek diserahkan ke kode Anda di OnPaint dan Metode OnPaintBackground sebuah Formulir. Itu PrintPageEventArgs lulus dalam a PrintPage acara akan berisi objek Grafik untuk dicetak. Bahkan mungkin untuk mendapatkan objek Grafik untuk beberapa gambar. Ini dapat membuat Anda melukis langsung pada gambar seperti halnya Anda melukis pada Formulir atau komponen.

Penangan Acara

Variasi lain dari metode satu adalah menambahkan event handler untuk Cat acara untuk formulir. Seperti apa kode itu:

Sub Pribadi Form1_Paint (_. Pengirim ByVal Sebagai Objek, _. ByVal e As System. Windows. Formulir. PaintEventArgs) _. Menangani Saya. Cat. Dim g As Graphics = e. Grafik. g. DrawString ("Tentang Visual Basic" & vbCrLf _. & "dan GDI +" & vbCrLf & "A Great Team", _. Font Baru ("Times New Roman", 20), _. Sikat. Firebrick, 0, 0) End Sub

BuatGrafika

Metode kedua untuk mendapatkan objek Grafik untuk kode Anda menggunakan a BuatGrafika metode yang tersedia dengan banyak komponen. Kode ini terlihat seperti ini:

Sub Tombol Pribadi1_Klik (_. Pengirim ByVal Sebagai Sistem. Objek, _. ByVal e As System. EventArgs) _. Menangani Tombol1.Klik. Redup g = Aku. BuatGrafika. g. DrawString ("Tentang Visual Basic" & vbCrLf _. & "dan GDI +" & vbCrLf & "A Great Team", _. Font Baru ("Times New Roman", 20), _. Sikat. Firebrick, 0, 0) End Sub

Ada beberapa perbedaan di sini. Ini ada di Button1.Klik acara karena kapan Formulir1 mengecat dirinya dalam Beban acara, gambar kami hilang. Jadi kita harus menambahkannya di acara selanjutnya. Jika Anda mengkodekan ini, Anda akan melihat bahwa grafik hilang ketika Formulir1 harus digambar ulang. (Mimimize dan maksimalkan lagi untuk melihat ini.) Itu keuntungan besar menggunakan metode pertama.

Sebagian besar referensi merekomendasikan penggunaan metode pertama karena gambar Anda akan dicat ulang secara otomatis. GDI + bisa rumit!