GDI + היא הדרך לצייר צורות, גופנים, תמונות או בדרך כלל כל דבר גרפי ויז'ואל בייסיק .NET.
מאמר זה הוא החלק הראשון במבוא שלם לשימוש ב- GDI + ב- Visual Basic .NET.
GDI + הוא חלק יוצא דופן ב- .NET. זה היה כאן לפני .NET (GDI + שוחרר עם Windows XP) והוא אינו חולק את אותם מחזורי עדכון כמו .NET Framework. בתיעוד של מיקרוסופט נכתב בדרך כלל שמיקרוסופט חלונות GDI + הוא ממשק API עבור C / C ++ מתכנתים למערכת ההפעלה Windows. אבל GDI + גם כולל את מרחבי שמות המשמשים ב- VB.NET לתכנות גרפיקה מבוססת תוכנה.
WPF
אבל זה לא ה רק תוכנה גרפית המסופקת על ידי מיקרוסופט, במיוחד מאז Framework 3.0. כאשר Vista ו- 3.0 הוצגו, ה- WPF החדש לחלוטין הוצג איתו. WPF היא גישה מואצת חומרה ברמה גבוהה לגרפיקה. כפי שטים קאהיל, חבר צוות התוכנה של WPF של מיקרוסופט, מנסח זאת, עם WPF "אתה מתאר את הסצנה שלך באמצעות מבנים ברמה גבוהה, ואנחנו נדאג לגבי מנוחה. "והעובדה שמדובר בחומרה מואצת פירושה שאינך צריך לסחוב את פעולת מעבד המחשב שלך לצייר צורות מסך. הרבה מהעבודה האמיתית נעשית על ידי כרטיס המסך שלך.
עם זאת, היינו כאן בעבר. כל "זינוק גדול קדימה" מלווה בדרך כלל בכמה מעידות לאחור, וחוץ מזה יידרשו שנים עד שה- WPF יעבור את דרכו בזיליוני בתים של קוד GDI +. זה נכון במיוחד מכיוון ש- WPF כמעט ומניח שאתה עובד עם מערכת בעלת מתח גבוה עם הרבה זיכרון וכרטיס גרפי חם. זו הסיבה שמחשבים אישיים רבים לא הצליחו להריץ את ויסטה (או לפחות להשתמש בגרפיקה "Aero" של ויסטה) כאשר הוצגה לראשונה. אז הסדרה הזו ממשיכה להיות זמינה באתר עבור כל מי שממשיך וצריך להשתמש בה.
קוד אול טוב
GDI + אינו משהו שאתה יכול לגרור לטופס כמו רכיבים אחרים ב- VB.NET. במקום זאת, בדרך כלל יש להוסיף אובייקטים של GDI + בדרך הישנה - על ידי קידודם מאפס! (אם כי, VB .NET כוללת מספר קטעי קוד מאוד שימושי שיכולים לעזור לך באמת.)
כדי לקוד את GDI +, אתה משתמש באובייקטים ובחבריהם ממספר מרחבי שמות .NET. (נכון לעכשיו, אלה הם למעשה רק קוד עטיפה לאובייקטים של מערכת ההפעלה Windows שעושים את העבודה בפועל.)
מרחבי שמות
מרחבי השמות ב- GDI + הם:
מערכת. ציור
זה ה מרחב שמות ליבה של GDI +. זה מגדיר אובייקטים לביצוע בסיסי (גופנים, עטים, מברשות בסיסיות וכו ') והאובייקט החשוב ביותר: גרפיקה. נראה יותר מכך בכמה פסקאות בלבד.
מערכת. ציור. ציור 2D
זה נותן לך אובייקטים לגרפיקה וקטורית דו מימדית מתקדמת יותר. חלקם מברשות שיפוע, כובעי עט ושינוי גיאומטרי.
מערכת. ציור. הדמיה
אם ברצונך לשנות תמונות גרפיות - כלומר לשנות את לוח הצבעים, לחלץ מטא נתונים של תמונות, לתפעל מטאפלים וכדומה - זה זה שאתה צריך.
מערכת. ציור. דפוס
כדי להציג תמונות לדף המודפס, לקיים אינטראקציה עם המדפסת עצמה ולעצב את המראה הכללי של עבודת הדפסה, השתמש באובייקטים כאן.
מערכת. ציור. טקסט
אתה יכול להשתמש באוספי גופנים עם מרחב שמות זה.
אובייקט גרפי
המקום להתחיל עם GDI + הוא המקום גרפיקה חפץ. למרות שהדברים שאתה מצייר מופיעים בצג שלך או במדפסת, האובייקט הגרפי הוא "הבד" שאתה מצייר עליו.
אבל אובייקט הגרפיקה הוא גם אחד המקורות הראשונים לבלבול בעת השימוש ב- GDI +. האובייקט הגרפי תמיד משויך לספציפית הקשר מכשיר. אז הבעיה הראשונה שלמעשה כל תלמיד חדש ב- GDI + מתעמת היא "איך משיגים אובייקט גרפי?"
למעשה ישנן שתי דרכים:
- אתה יכול להשתמש ב- ה פרמטר אירוע המועבר ל - OnPaint אירוע עם PaintEventArgs חפץ. מספר אירועים עוברים את PaintEventArgs ותוכלו להשתמש בכדי להתייחס לאובייקט הגרפיקה שכבר נמצא בשימוש בהקשר ההתקן.
- אתה יכול להשתמש ב- CreateGraphics שיטה להקשר התקן ליצירת אובייקט גרפי.
להלן דוגמא לשיטה הראשונה:
OverPides Sub OnPaint מוגן (_. מערכת ByVal e As. חלונות. טפסים. PaintEventArgs) Dim g כגרפיקה = ה. גרפיקה. ז. DrawString ("אודות Visual Basic" & vbCrLf _. & "ו- GDI +" & vbCrLf & "צוות נהדר", _. גופן חדש ("Times New Roman", 20), _. מברשות. Firebrick, 0, 0) MyBase. OnPaint (e) סיום משנה
לחץ כאן כדי להציג את האיור
הוסף זאת למחלקה Form1 ליישום Windows רגיל כדי לקודד אותו בעצמך.
בדוגמה זו, אובייקט גרפיקה כבר נוצר עבור הטופס צורה 1. כל הקוד שעליך לעשות הוא ליצור מופע מקומי של אותו אובייקט ולהשתמש בו כדי לצייר באותה טופס. שימו לב שהקוד שלכם עוקף ה OnPaint שיטה. זו הסיבה MyBase. OnPaint (e) מוצא להורג בסוף. עליך לוודא שאם אובייקט הבסיס (זה שאתה מגביל) מבצע משהו אחר, הוא מקבל סיכוי לעשות זאת. לעתים קרובות הקוד שלך פועל בלי זה, אבל זה רעיון טוב.
PaintEventArgs
אתה יכול גם להשיג אובייקט גרפי באמצעות ה- PaintEventArgs אובייקט שהועבר לקוד שלך ב OnPaint ו שיטות OnPaintBackground של טופס. ה PrintPageEventArgs עבר בתוך א הדפס דף האירוע יכיל אובייקט גרפי להדפסה. אפשר אפילו להשיג אובייקט גרפי עבור תמונות מסוימות. זה יכול לאפשר לך לצבוע על התמונה באותה צורה שאתה מצייר על טופס או רכיב.
מנהל אירועים
וריאציה נוספת של שיטה אחת היא להוסיף מטפל אירועים עבור ה- צבע אירוע לטופס. הנה איך נראה קוד זה:
טופס משנה פרטי 1_צייר (_. שולח ByVal כאובייקט, _. מערכת ByVal e As. חלונות. טפסים. PaintEventArgs) _. מטפל בי. צבע. Dim g כגרפיקה = ה. גרפיקה. ז. DrawString ("אודות Visual Basic" & vbCrLf _. & "ו- GDI +" & vbCrLf & "צוות נהדר", _. גופן חדש ("Times New Roman", 20), _. מברשות. Firebrick, 0, 0) סיום משנה
CreateGraphics
השיטה השנייה להשיג אובייקט גרפי עבור הקוד שלך משתמשת ב- CreateGraphics שיטה זמינה עם רכיבים רבים. הקוד נראה כך:
לחצן משנה פרטי 1_לחץ (_. שולח ByVal כמערכת. חפץ, _. מערכת ByVal e As. EventArgs) _. כפתור ידיות. לחץ על. Dim g = Me. CreateGraphics. ז. DrawString ("אודות Visual Basic" & vbCrLf _. & "ו- GDI +" & vbCrLf & "צוות נהדר", _. גופן חדש ("Times New Roman", 20), _. מברשות. Firebrick, 0, 0) סיום משנה
יש כאן כמה הבדלים. זה נמצא ב לחצן1.לחץ אירוע כי מתי צורה 1 מחזירה את עצמה ב עומס האירוע, הגרפיקה שלנו אבודה. אז עלינו להוסיף אותם באירוע מאוחר יותר. אם תקודד את זה, תבחין שהגרפיקה הולכת לאיבוד כאשר צורה 1 צריך לצייר מחדש. (לחקות ולמקסם שוב לראות את זה.) זה יתרון גדול לשימוש בשיטה הראשונה.
רוב הפניות ממליצות להשתמש בשיטה הראשונה מכיוון שהגרפיקה שלך תצייר מחדש באופן אוטומטי. GDI + יכול להיות מסובך!