Visual Basic .NET Eğitiminde GDI + Grafikleri

click fraud protection

GDI + şekiller, yazı tipleri, resimler veya genellikle herhangi bir grafik çizmenin yoludur Visual Basic .AĞ.

Bu makale, Visual Basic .NET'te GDI + kullanmaya tam bir girişin ilk bölümüdür.

GDI +, .NET'in alışılmadık bir parçasıdır. .NET'ten (GDI + Windows XP ile birlikte) önce gelmişti ve .NET Framework ile aynı güncelleme döngülerini paylaşmıyor. Microsoft'un belgeleri genellikle Microsoft Windows GDI + 'nın C / C ++ programcılar Windows işletim sistemine. Ancak GDI + Ayrıca içerir VB.NET'te kullanılan ad alanları yazılım tabanlı grafik programlama için.

WPF

Ama bu değil bir tek Microsoft tarafından sağlanan grafik yazılımı, özellikle Framework 3.0'dan beri. Vista ve 3.0 piyasaya sunulduğunda, tamamen yeni WPF piyasaya sunuldu. WPF, grafiklere donanım düzeyinde hızlandırılmış bir yaklaşımdır. Microsoft WPF yazılım ekibi üyesi Tim Cahill'in söylediği gibi, WPF ile "sahnenizi üst düzey yapılar kullanarak tanımlıyorsunuz ve endişeleneceğiz Ve donanım hızlandırması, PC işlemcinizin çizim şekillerinin çalışmasını sürüklemenize gerek olmadığı anlamına gelir. ekran. Gerçek işlerin çoğu grafik kartınız tarafından yapılır.

instagram viewer

Ancak daha önce burada bulunduk. Her "ileriye doğru büyük sıçramaya" genellikle geriye doğru birkaç tökezleme eşlik eder ve bunun yanı sıra, WPF'nin GDI + kodunun milyonlarca baytında yol alması yıllar alacaktır. WPF, çok fazla belleğe ve sıcak grafik kartına sahip yüksek güçlü bir sistemle çalıştığınızı varsaydığı için özellikle doğru. Bu yüzden birçok PC ilk kez piyasaya sürüldüğünde Vista'yı çalıştıramadı (veya en azından Vista "Aero" grafiklerini kullanamadı). Böylece bu seri, kullanmaya ihtiyaç duyan herkes için sitede bulunmaya devam ediyor.

İyi Ol 'Kodu

GDI +, VB.NET'teki diğer bileşenler gibi bir forma sürükleyebileceğiniz bir şey değildir. Bunun yerine, GDI + nesneleri genellikle eski şekilde eklenmelidir - sıfırdan kodlanarak! (Bununla birlikte, VB .NET, size gerçekten yardımcı olabilecek çok sayıda kullanışlı kod snippet'i içerir.)

GDI + 'yı kodlamak için, birkaç .NET ad alanından nesneleri ve üyelerini kullanırsınız. (Şu anda, bunlar aslında işi yapan Windows OS nesneleri için sadece sarıcı kodlardır.)

Ad alanları

GDI + içindeki ad alanları şunlardır:

Sistemi. Çizim

Bu çekirdek GDI + ad alanı. Temel oluşturma için nesneleri tanımlar (yazı, kalemler, temel fırçalar vb.) ve en önemli nesne: Grafikler. Bundan sadece birkaç paragrafta daha fazlasını göreceğiz.

Sistemi. Çizim. Drawing2D

Bu size daha gelişmiş iki boyutlu vektör grafikleri için nesneler verir. Bazıları degrade fırçalar, kalem kapakları ve geometrik dönüşümlerdir.

Sistemi. Çizim. Görüntüleme

Grafik görüntüleri değiştirmek istiyorsanız - yani, paleti değiştirin, görüntü meta verilerini çıkarın, meta dosyaları yönetin, vb. - ihtiyacınız olan şey budur.

Sistemi. Çizim. Baskı

Yazdırılan sayfaya görüntü oluşturmak, yazıcının kendisiyle etkileşim kurmak ve bir yazdırma işinin genel görünümünü biçimlendirmek için buradaki nesneleri kullanın.

Sistemi. Çizim. Metin

Bu ad alanıyla yazı tipi koleksiyonlarını kullanabilirsiniz.

Grafik Nesnesi

GDI + ile başlayacağınız yer Grafik nesne. Çizdiğiniz şeyler monitörünüzde veya bir yazıcıda gösterilse de, Graphics nesnesi çizdiğiniz "tuval" tir.

Ancak Graphics nesnesi, GDI + kullanırken ilk karışıklık kaynaklarından biridir. Graphics nesnesi her zaman belirli bir öğeyle ilişkilendirilir cihaz içeriği. Dolayısıyla, neredeyse her yeni GDI + öğrencisinin karşılaştığı ilk sorun, "Nasıl bir Grafik nesnesi alabilirim?"

Temel olarak iki yol vardır:

  1. Kullanabilirsiniz e öğesine aktarılan olay parametresi OnPaint ile olay PaintEventArgs nesne. Birkaç olay PaintEventArgs ve aygıt bağlamı tarafından kullanılmakta olan Graphics nesnesine başvurmak için de kullanabilirsiniz.
  2. Kullanabilirsiniz CreateGraphics grafik nesnesi oluşturmak için bir aygıt bağlamı yöntemi.

İlk yöntemin bir örneği:

Korumalı Geçersiz Kılma Alt OnPaint (_. ByVal e As Sistemi. Pencereler. Formlar. PaintEventArgs) Dim g Grafik Olarak = e. Grafik. g. DrawString ("Visual Basic Hakkında" & vbCrLf _. & "ve GDI +" & vbCrLf & "Harika Bir Takım", _. Yeni Yazı Tipi ("Times New Roman", 20), _. Fırçalar. Ateş tuğlası, 0, 0) MyBase. OnPaint (e) End Sub

Resmi görüntülemek için Buraya tıklayın

Bunu kendiniz kodlamak için standart bir Windows Uygulaması için Form1 sınıfına ekleyin.

Bu örnekte, form için zaten bir Grafik nesnesi oluşturuldu Form1. Kodunuzun tek yapması gereken, bu nesnenin yerel bir örneğini oluşturmak ve aynı formda çizim yapmak için kullanmaktır. Kodunuzun olduğuna dikkat edin geçersiz kılar OnPaint yöntem. Bu yüzden MyBase. OnPaint (e) sonunda yürütülür. Temel nesne (geçersiz kıldığınız nesne) başka bir şey yapıyorsa, bunu yapma şansına sahip olduğundan emin olmanız gerekir. Genellikle, kodunuz bu olmadan çalışır, ancak bu iyi bir fikirdir.

PaintEventArgs

Ayrıca, bir Grafik nesnesini PaintEventArgs içindeki kodunuza teslim edilen nesne OnPaint ve OnPaintBackground yöntemleri bir Form. PrintPageEventArgs geçti Sayfayı yazdır olayı yazdırmak için bir Grafik nesnesi içerecektir. Bazı görüntüler için bir Grafik nesnesi almak bile mümkündür. Bu, bir Form veya bileşen üzerinde yaptığınız gibi görüntüyü doğrudan boyamanıza izin verebilir.

Olay işleyicisi

Birinci yöntemin başka bir varyasyonu, Boya form için olay. İşte bu kod şöyle görünür:

Özel Alt Form1_Paint (_. ByVal gönderici As Object olarak, _. ByVal e As Sistemi. Pencereler. Formlar. PaintEventArgs) _. Beni İşliyor. Boya. Dim g As Graphics = e. Grafik. g. DrawString ("Visual Basic Hakkında" & vbCrLf _. & "ve GDI +" & vbCrLf & "Harika Bir Takım", _. Yeni Yazı Tipi ("Times New Roman", 20), _. Fırçalar. Ateş tuğlası, 0, 0) End Sub

CreateGraphics

Kodunuz için bir Grafik nesnesi almanın ikinci yöntemi, CreateGraphics birçok bileşenle kullanılabilen yöntem. Kod şöyle görünür:

Özel Alt Düğmesi1_ tıklayın (_. ByVal gönderici As System. Nesne, _. ByVal e As Sistemi. EventArgs) _. Düğme 1. Dim g = Ben. CreateGraphics. g. DrawString ("Visual Basic Hakkında" & vbCrLf _. & "ve GDI +" & vbCrLf & "Harika Bir Takım", _. Yeni Yazı Tipi ("Times New Roman", 20), _. Fırçalar. Ateş tuğlası, 0, 0) End Sub

Burada birkaç fark var. Bu Button1.Click olay çünkü ne zaman Form1 kendini yeniden boyadı Yük olay, grafiklerimiz kaybolur. Bu yüzden onları daha sonraki bir etkinliğe eklemeliyiz. Bunu kodlarsanız, grafiklerin Form1 yeniden çizilmeli. (Bunu görmek için ekranı en üst düzeye çıkarın ve en üst düzeye çıkarın.) Bu, ilk yöntemi kullanmak için büyük bir avantaj.

Referanslarınızın çoğu ilk yöntemi kullanmanızı önerir, çünkü grafikleriniz otomatik olarak yeniden boyanacaktır. GDI + zor olabilir!

instagram story viewer