Nowy

Grafika GDI + w Visual Basic .NET

Grafika GDI + w Visual Basic .NET



We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

GDI + to sposób rysowania kształtów, czcionek, obrazów lub ogólnie dowolnej grafiki w Visual Basic .NET.

GDI + to niezwykła część platformy .NET. To było tutaj przed .NET (GDI + został wydany z Windows XP) i nie ma takich samych cykli aktualizacji jak .NET Framework. Dokumentacja Microsoft zwykle stwierdza, że ​​Microsoft Windows GDI + to API dla programistów C / C ++ w systemie operacyjnym Windows. Ale GDI + również obejmuje przestrzenie nazw używane w VB.NET do programowania grafiki opartej na oprogramowaniu.

WPF

Ale to nie jest tylko oprogramowanie graficzne dostarczane przez Microsoft, zwłaszcza od Framework 3.0. Kiedy wprowadzono Vistę i 3.0, wprowadzono wraz z nią zupełnie nowy WPF. WPF to wysokopoziomowe, przyspieszane sprzętowo podejście do grafiki. Jak ujął to Tim Cahill, członek zespołu Microsoft WPF ds. Oprogramowania, wraz z WPF „opisujesz swoją scenę za pomocą konstruktów wysokiego poziomu, a my zajmiemy się resztą”. A fakt, że jest on przyspieszany sprzętowo, oznacza, że ​​nie musisz przeciągać operacji procesora komputera rysującego kształty na ekranie. Większość prawdziwej pracy wykonuje karta graficzna.

Byliśmy tu jednak wcześniej. Każdemu „wielkiemu skokowi naprzód” towarzyszy zwykle kilka potknięć do tyłu, a poza tym WPF zajmie lata, by przejść przez zilliony bajtów kodu GDI +. Jest to szczególnie prawdziwe, ponieważ WPF prawie zakłada, że ​​pracujesz z systemem o dużej mocy z dużą ilością pamięci i gorącą kartą graficzną. Dlatego na wielu komputerach PC nie można było uruchomić systemu Vista (a przynajmniej użyć grafiki „Aero” systemu Vista), gdy została wprowadzona po raz pierwszy. Ta seria jest więc nadal dostępna na stronie dla wszystkich, którzy nadal będą musieli z niej korzystać.

Dobry kod Ol

GDI + nie jest czymś, co można przeciągnąć na formularz podobny do innych komponentów w VB.NET. Zamiast tego, obiekty GDI + zazwyczaj trzeba dodawać starym sposobem - kodując je od zera! (Chociaż VB .NET zawiera wiele bardzo przydatnych fragmentów kodu, które naprawdę mogą ci pomóc.)

Do kodowania GDI + używasz obiektów i ich członków z wielu przestrzeni nazw .NET. (W chwili obecnej są to po prostu kody otokowe dla obiektów systemu operacyjnego Windows, które faktycznie działają.)

Przestrzenie nazw

Przestrzenie nazw w GDI + to:

System.Drawing

To jest podstawowa przestrzeń nazw GDI +. Definiuje obiekty do podstawowego renderowania (czcionki, pióra, podstawowe pędzle itp.) Oraz najważniejszy obiekt: Grafika. Więcej o tym zobaczymy w kilku akapitach.

System.Drawing.Drawing2D

Daje to obiekty do bardziej zaawansowanej dwuwymiarowej grafiki wektorowej. Niektóre z nich to pędzle gradientowe, wieczka do piór i transformaty geometryczne.

System.Drawing.Imaging

Jeśli chcesz zmienić obrazy graficzne - to znaczy zmienić paletę, wyodrębnić metadane obrazu, manipulować metaplikami i tak dalej - to jest to, czego potrzebujesz.

System.Drawing.Printing

Aby renderować obrazy na wydrukowanej stronie, wchodzić w interakcje z samą drukarką i formatować ogólny wygląd zadania drukowania, użyj tutaj obiektów.

System.Drawing.Text

W tej przestrzeni nazw można używać kolekcji czcionek.

Obiekt graficzny

Miejsce na początek z GDI + toGrafika obiekt. Chociaż rzeczy, które rysujesz, pojawiają się na monitorze lub drukarce, obiekt graficzny jest „płótnem”, na którym rysujesz.

Ale obiekt graficzny jest również jednym z pierwszych źródeł nieporozumień podczas korzystania z GDI +. Obiekt graficzny jest zawsze powiązany z określonymkontekst urządzenia. Pierwszym problemem, z którym boryka się praktycznie każdy nowy uczeń GDI +, jest: „Jak uzyskać obiekt graficzny?”

Istnieją zasadniczo dwa sposoby:

  1. Możesz użyćmi parametr zdarzenia przekazywany doOnPaint wydarzenie zPaintEventArgs obiekt. Kilka wydarzeń przechodziPaintEventArgs i możesz użyć, aby odwołać się do obiektu Graphics, który jest już używany przez kontekst urządzenia.
  2. Możesz użyćCreateGraphics metoda kontekstu urządzenia, aby utworzyć obiekt Graphics.

Oto przykład pierwszej metody:

Protected Overrides Sub OnPaint (_ ByVal e As System.Windows.Forms.PaintEventArgs) Dim g As Graphics = e.Graphics g.DrawString („About Visual Basic” & vbCrLf _ & ”oraz GDI +” oraz vbCrLf i „A Great Team” , _ Nowa czcionka („Times New Roman”, 20), _ Szczotki. Firebrick, 0, 0) MyBase.OnPaint (e) End Sub

Kliknij tutaj, aby wyświetlić ilustrację

Dodaj to do klasy Form1 dla standardowej aplikacji Windows, aby samodzielnie ją kodować.

W tym przykładzie obiekt graficzny jest już utworzony dla formularzaFormularz 1. Wszystko, co musisz zrobić, to utworzyć lokalną instancję tego obiektu i użyć go do rysowania w tej samej formie. Zauważ, że twój kodZastępuje OnPaint metoda. DlategoMyBase.OnPaint (e) jest wykonywany na końcu. Musisz upewnić się, że jeśli obiekt podstawowy (ten, który zastępujesz) robi coś innego, ma szansę to zrobić. Często twój kod działa bez tego, ale to dobry pomysł.

PaintEventArgs

Możesz również uzyskać obiekt graficzny za pomocąPaintEventArgs obiekt przekazany do twojego kodu wOnPaint iMetody OnPaintBackground formularzowy. ThePrintPageEventArgs zdany wDrukuj stronę wydarzenie będzie zawierać obiekt graficzny do wydrukowania. Możliwe jest nawet uzyskanie obiektu graficznego dla niektórych obrazów. Dzięki temu możesz malować bezpośrednio na obrazie w taki sam sposób, jak malowałbyś na formularzu lub komponencie.

Obsługa zdarzeń

Inną odmianą metody pierwszej jest dodanie procedury obsługi zdarzeń dlaFarba wydarzenie dla formularza. Oto jak wygląda ten kod:

Prywatny Sub Form1_Paint (_ ByVal nadawca jako obiekt, _ ByVal e As System.Windows.Forms.PaintEventArgs) _ Obsługuje Me.Paint Dim g As Graphics = e.Graphics g.DrawString („About Visual Basic” & vbCrLf _ & ”oraz GDI + ”i vbCrLf i„ A Great Team ”, _ Nowa czcionka („ Times New Roman ”, 20), _ Brushes.Firebrick, 0, 0) End Sub

CreateGraphics

Druga metoda uzyskania obiektu graficznego dla kodu wykorzystujeCreateGraphics metoda dostępna z wieloma komponentami. Kod wygląda następująco:

Private Sub Button1_Click (_ ByVal nadawca jako System.Object, _ ByVal e As System.EventArgs) _ Obsługuje Button1.Click Dim g = Me.CreateGraphics g.DrawString ("About Visual Basic" & vbCrLf _ & "and GDI +" & vbCrLf & „A Great Team”, _ Nowa czcionka („Times New Roman”, 20), _ Brushes.Firebrick, 0, 0) End Sub

Jest tu kilka różnic. To jest wButton1.Click wydarzenie, ponieważ kiedyFormularz 1 odmalowuje się wObciążenie wydarzenie, nasza grafika zginęła. Musimy więc dodać je w późniejszym wydarzeniu. Jeśli to kodujesz, zauważysz, że grafika zostanie utracona, kiedyFormularz 1 trzeba przerysować. (Ponownie zmaksymalizuj i zmaksymalizuj, aby to zobaczyć.) To duża zaleta korzystania z pierwszej metody.

Większość referencji zaleca użycie pierwszej metody, ponieważ grafika zostanie automatycznie odmalowana. GDI + może być trudne!