GDI + είναι ο τρόπος για να σχεδιάσετε σχήματα, γραμματοσειρές, εικόνες ή γενικά τίποτα γραφικό Visual Basic .ΚΑΘΑΡΑ.
Αυτό το άρθρο είναι το πρώτο μέρος μιας πλήρους εισαγωγής στη χρήση του GDI + στο Visual Basic .NET.
Το GDI + είναι ένα ασυνήθιστο τμήμα του .NET. Ήταν εδώ πριν από την έκδοση του .NET (GDI + κυκλοφόρησε με τα Windows XP) και δεν μοιράζεται τους ίδιους κύκλους ενημέρωσης με το .NET Framework. Η τεκμηρίωση της Microsoft δηλώνει συνήθως ότι το Microsoft Windows GDI + είναι ένα API για C / C ++ προγραμματιστές στο λειτουργικό σύστημα των Windows. Αλλά GDI + επίσης περιλαμβάνει το namespaces που χρησιμοποιούνται στο VB.NET για προγραμματισμό γραφικών με βάση το λογισμικό.
WPF
Αλλά δεν είναι το μόνο λογισμικού γραφικών που παρέχεται από τη Microsoft, ειδικά από το Πλαίσιο 3.0. Όταν εισήχθησαν τα Vista και 3.0, το εντελώς νέο WPF εισήχθη μαζί του. Το WPF είναι μια προσέγγιση υψηλού επιπέδου, επιταχυνόμενη από το υλικό για γραφικά. Όπως λέει ο Tim Cahill, μέλος της ομάδας λογισμικού της Microsoft WPF, με το WPF "περιγράφετε τη σκηνή σας χρησιμοποιώντας κατασκευές υψηλού επιπέδου και θα ανησυχούμε για την ξεκούραση ". Και το γεγονός ότι το υλικό είναι επιταχυνόμενο σημαίνει ότι δεν χρειάζεται να σύρετε τη λειτουργία των σχημάτων σχεδίασης του επεξεργαστή του υπολογιστή σας στο οθόνη. Μεγάλο μέρος της πραγματικής εργασίας γίνεται από την κάρτα γραφικών σας.
Ήμασταν εδώ πριν, ωστόσο. Κάθε "μεγάλο βήμα προς τα εμπρός" συνοδεύεται συνήθως από λίγα σκοντάφτοντα προς τα πίσω, και εκτός αυτού, θα χρειαστούν χρόνια για να μπορέσει το WPF να περάσει μέσα από τα zillions των bytes του κώδικα GDI +. Αυτό ισχύει ιδιαίτερα από τη στιγμή που το WPF υποθέτει ότι εργάζεστε με ένα σύστημα υψηλής ισχύος με μεγάλη μνήμη και μια καυτή κάρτα γραφικών. Αυτός είναι ο λόγος για τον οποίο πολλοί υπολογιστές δεν μπορούσαν να εκτελούν Vista (ή τουλάχιστον να χρησιμοποιούν τα γραφικά Vista "Aero") όταν παρουσιάστηκε για πρώτη φορά. Επομένως, αυτή η σειρά εξακολουθεί να είναι διαθέσιμη στον ιστότοπο για όλους και όσους εξακολουθούν να χρειάζονται τη χρήση τους.
Ο καλός κώδικας
Το GDI + δεν είναι κάτι που μπορείτε να μεταφέρετε σε μια φόρμα όπως τα υπόλοιπα στοιχεία του VB.NET. Αντ 'αυτού, τα αντικείμενα GDI + γενικά πρέπει να προστεθούν στον παλιό τρόπο - με την κωδικοποίησή τους από την αρχή! (Παρόλο που το VB .NET περιλαμβάνει μια σειρά πολύ εύχρηστων αποσπασμάτων κώδικα που πραγματικά μπορούν να σας βοηθήσουν.)
Για να κωδικοποιήσετε το GDI +, χρησιμοποιείτε αντικείμενα και τα μέλη τους από διάφορους χώρους .NET. (Προς το παρόν, αυτά είναι στην πραγματικότητα απλά κώδικας περιτυλίγματος για αντικείμενα λειτουργικού συστήματος των Windows που πραγματικά κάνουν την εργασία.)
Ονόματα χώρων
Οι χώροι ονομάτων στο GDI + είναι:
Σύστημα. Σχέδιο
Αυτό είναι ο κεντρικός χώρος ονομάτων GDI +. Ορίζει αντικείμενα για βασική απόδοση (γραμματοσειρές, στυλό, βασικές βούρτσες κ.λπ.) και το σημαντικότερο αντικείμενο: Γραφικά. Θα δούμε περισσότερα από αυτά σε μερικές μόνο παραγράφους.
Σύστημα. Σχέδιο. Drawing2D
Αυτό σας δίνει αντικείμενα για πιο προηγμένα δισδιάστατα διανυσματικά γραφικά. Ορισμένες από αυτές είναι βούρτσες κλίσης, καπάκια στυλό και γεωμετρικά μετασχηματισμοί.
Σύστημα. Σχέδιο. Απεικόνιση
Εάν θέλετε να αλλάξετε γραφικές εικόνες - δηλαδή να αλλάξετε την παλέτα, να εξαγάγετε μεταδεδομένα εικόνας, να χειριστείτε μετα-αρχεία και ούτω καθεξής - αυτό είναι αυτό που χρειάζεστε.
Σύστημα. Σχέδιο. Εκτύπωση
Για να προβάλετε τις εικόνες στην εκτυπωμένη σελίδα, να αλληλεπιδράσετε με τον ίδιο τον εκτυπωτή και να διαμορφώσετε τη συνολική εμφάνιση μιας εργασίας εκτύπωσης, χρησιμοποιήστε τα αντικείμενα εδώ.
Σύστημα. Σχέδιο. Κείμενο
Μπορείτε να χρησιμοποιήσετε συλλογές γραμματοσειρών με αυτό το χώρο ονομάτων.
Αντικείμενο γραφικών
Ο τόπος για να ξεκινήσετε με το GDI + είναι ο Γραφικά αντικείμενο. Αν και τα πράγματα που σχεδιάζετε εμφανίζονται στην οθόνη σας ή σε έναν εκτυπωτή, το αντικείμενο Graphics είναι ο "καμβάς" στον οποίο σχεδιάζετε.
Αλλά το αντικείμενο γραφικών είναι επίσης μια από τις πρώτες πηγές σύγχυσης κατά τη χρήση του GDI +. Το αντικείμενο Γραφικά συσχετίζεται πάντοτε με ένα συγκεκριμένο αντικείμενο περιβάλλοντος συσκευών. Έτσι, το πρώτο πρόβλημα που αντιμετωπίζει σχεδόν κάθε νέος φοιτητής του GDI + είναι "Πώς μπορώ να αποκτήσω ένα γραφικό αντικείμενο;"
Υπάρχουν βασικά δύο τρόποι:
- Μπορείτε να χρησιμοποιήσετε το μι η παράμετρος συμβάντος που μεταβιβάζεται στο OnPaint εκδήλωση με το PaintEventArgs αντικείμενο. Αρκετά γεγονότα περνούν PaintEventArgs και μπορείτε να χρησιμοποιήσετε το για να ανατρέξετε στο αντικείμενο γραφικών που χρησιμοποιείται ήδη από το περιβάλλον της συσκευής.
- Μπορείτε να χρησιμοποιήσετε το ΔημιουργίαGraphics για ένα περιβάλλον συσκευής για να δημιουργήσετε ένα αντικείμενο γραφικών.
Ακολουθεί ένα παράδειγμα της πρώτης μεθόδου:
Προστατευμένες αντικαταστάσεις SubPaint (_. ByVal e ως σύστημα. Windows. Έντυπα. PaintEventArgs) Dim g As Graphics = e. Γραφικά. σολ. DrawString ("Σχετικά με τη Visual Basic" & vbCrLf _. & "και GDI +" & vbCrLf & "Μια μεγάλη ομάδα", _. Νέα γραμματοσειρά ("Times New Roman", 20), _. Βούρτσες. Firebrick, 0, 0) MyBase. OnPaint (ε) End Sub
Κάντε κλικ εδώ για να εμφανίσετε την εικόνα
Προσθέστε αυτό στην κλάση Form1 για μια τυπική εφαρμογή των Windows για να την κωδικοποιήσετε μόνοι σας.
Σε αυτό το παράδειγμα, ένα αντικείμενο γραφικών έχει ήδη δημιουργηθεί για τη φόρμα Form1. Ολόκληρος ο κώδικας που πρέπει να κάνετε είναι να δημιουργήσετε μια τοπική παρουσία του αντικειμένου και να τον χρησιμοποιήσετε για να σχεδιάσετε την ίδια φόρμα. Παρατηρήστε ότι ο κωδικός σας Αντικαθιστά ο OnPaint μέθοδος. Να γιατί MyBase. OnPaint (ε) εκτελείται στο τέλος. Πρέπει να βεβαιωθείτε ότι εάν το βασικό αντικείμενο (αυτό που υπερισχύει) κάνει κάτι άλλο, παίρνει μια ευκαιρία να το κάνει. Συχνά, ο κώδικας σας λειτουργεί χωρίς αυτό, αλλά είναι μια καλή ιδέα.
PaintEventArgs
Μπορείτε επίσης να πάρετε ένα γραφικό αντικείμενο χρησιμοποιώντας το PaintEventArgs αντικείμενο που παραδίδεται στον κώδικα σας στο OnPaint και OnPaintBackground μεθόδους μιας φόρμας. ο PrintPageEventArgs πέρασε σε ένα PrintPage το συμβάν θα περιέχει ένα γραφικό αντικείμενο για εκτύπωση. Είναι ακόμη δυνατό να αποκτήσετε ένα γραφικό αντικείμενο για κάποιες εικόνες. Αυτό μπορεί να σας αφήσει να βάψετε δεξιά στην εικόνα με τον ίδιο τρόπο που θα ζωγραφίζατε σε μια φόρμα ή ένα στοιχείο.
Χειριστής συμβάντων
Μια άλλη παραλλαγή της μεθόδου 1 είναι να προσθέσετε ένα χειριστή συμβάντων για το Χρώμα εκδήλωση για τη φόρμα. Εδώ φαίνεται ο κώδικας:
Ιδιωτική φόρμα υποτίτλων1_Χρώμα (_. ByVal αποστολέας ως αντικείμενο, _. ByVal e ως σύστημα. Windows. Έντυπα. PaintEventArgs) _. Με χειρίζεται. Χρώμα. Dim g ως γραφικά = e. Γραφικά. σολ. DrawString ("Σχετικά με τη Visual Basic" & vbCrLf _. & "και GDI +" & vbCrLf & "Μια μεγάλη ομάδα", _. Νέα γραμματοσειρά ("Times New Roman", 20), _. Βούρτσες. Firebrick, 0, 0) End Sub
ΔημιουργίαGraphics
Η δεύτερη μέθοδος για να αποκτήσετε ένα αντικείμενο γραφικών για τον κώδικα σας χρησιμοποιεί a ΔημιουργίαGraphics που διατίθεται με πολλά στοιχεία. Ο κώδικας μοιάζει με αυτό:
Private Sub Button1_Click (_. ByVal αποστολέας ως σύστημα. Αντικείμενο, _. ByVal e ως σύστημα. EventArgs) _. Χειριστήρια Κουμπί1.Κάντε κλικ. Dim g = Me. ΔημιουργίαGraphics. σολ. DrawString ("Σχετικά με τη Visual Basic" & vbCrLf _. & "και GDI +" & vbCrLf & "Μια μεγάλη ομάδα", _. Νέα γραμματοσειρά ("Times New Roman", 20), _. Βούρτσες. Firebrick, 0, 0) End Sub
Υπάρχουν μερικές διαφορές εδώ. Αυτό είναι στο Κουμπί1 γεγονός, γιατί Form1 επαναλαμβάνει τον εαυτό του στο Φορτώνω περίπτωση, τα γραφικά μας χάνονται. Πρέπει λοιπόν να τα προσθέσουμε σε ένα μεταγενέστερο γεγονός. Αν κωδικοποιήσετε αυτό, θα παρατηρήσετε ότι τα γραφικά χάνονται όταν Form1 πρέπει να ανασυγκροτηθεί. (Απενεργοποιήστε και μεγιστοποιήστε ξανά για να δείτε αυτό.) Αυτό είναι ένα μεγάλο πλεονέκτημα στη χρήση της πρώτης μεθόδου.
Οι περισσότερες αναφορές συνιστούν τη χρήση της πρώτης μεθόδου αφού τα γραφικά σας θα επιδιορθωθούν αυτόματα. Το GDI + μπορεί να είναι δύσκολο!