PracticU

פרויקט מעשי ב-#C - תוכנת צייר - חלק 15

בלי כתוביותעם כתוביות
PracticU › פרויקט מעשי ב-#C - תוכנת צייר › פרויקט מעשי ב-#C - תוכנת צייר - חלק 15
פרויקט מעשי ב-#C - תוכנת צייר - חלק 15
בשיעור הזה מסבירים מה קורה כשקוראים ל-Invalidate, ולמה הציור לא מתרחש מיד אלא כשמערכת ההפעלה מחליטה.
השלבים העיקריים
1. בקשה, לא פקודה: Invalidate() מבקש ממערכת ההפעלה לצייר את הפאנל מחדש בזמן שנוח לה. הציור לא מתרחש מיד.
2. איגום: אם קוראים ל-Invalidate כמה פעמים ברצף, מערכת ההפעלה ממתינה ומציירת פעם אחת בסוף. כך התוכנה מגיבה מהר והציור נעשה ברקע.
3. Invalidate עם אזור: אפשר להעביר לפונקציה מלבן (Rectangle) או רשימת מלבנים. אז רק האזור הזה נחשב לציור מחדש, והביצועים משתפרים.
4. ציור ידני: אפשר לכתוב פונקציה משלנו שמציירת, לקרוא לה במקום Invalidate, וליצור בה Graphics משלנו. זו שיטה לא סטנדרטית, והשיעור משאיר אותה לניסוי.
שימו לב
- ב-Paint שמופעל על ידי Invalidate, e.Graphics כבר קיים, ואין צורך ליצור ערוץ ציור חדש.
- שיטת האזור המוגדר מתאימה לביצועים גבוהים יותר, והשיעור לא נכנס אליה לעומק.
בסיום השיעור התלמיד מבין שהציור מתבצע במועד שמערכת ההפעלה בוחרת, ולמה זה חשוב לתגובתיות התוכנה.
השיעור הבא בקורס: פרויקט מעשי ב-#C - תוכנת צייר - חלק 16

פרקי ההרצאה: פרויקט מעשי ב-#C - תוכנת צייר - חלק 15

  1. 00:00

    שאלה על Invalidate ומה הוא עושה

  2. 00:42

    Invalidate מבקש ציור מחדש ממערכת ההפעלה

  3. 01:30

    ציור כעבודה כבדה ברקע

  4. 02:14

    אגירת קריאות Invalidate לציור אחד

  5. 02:55

    הגרפיקס כבר קיים ב-Paint

  6. 04:12

    Invalidate עם אזור מלבן מסוים

  7. 04:47

    פונקציה ייעודית לציור במקום Invalidate

תמלול ההרצאה: פרויקט מעשי ב-#C - תוכנת צייר - חלק 15

הטקסט המלא של הדקות הראשונות בהרצאה «פרויקט מעשי ב-#C - תוכנת צייר - חלק 15» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    אז נשאלתי שאלה לגבי invalidate. מה זה בעצם invalidate? מה קורה כשאנחנו קוראים ל invalidate? מה המטרה של invalidate? אז התשובה היא שכשאני קורא מתוך הקוד שלי ל invalidate, מה בעצם אני אומר?

  2. 00:25

    אני בעצם פונה למערכת ההפעלה, אני קורא ל invalidate, אני בעצם אומר למערכת ההפעלה, בזמנך, כשאת מרגישה לנכון, אז תפעיל לי את האירוע Paint של פאנל אחד.

  3. 00:42

    אני אומר לפאנל אחד, בואו נגיד את זה שוב, אני אומר לפאנל אחד Invalidate. אתה לא מעודכן. אז מה בעצם יקרה? מה שיקרה זה שמערכת ההפעלה תפעיל את אירוע Paint של פאנל אחד שהיא תראה לנכון.

  4. 01:07

    זאת אומרת זה לא יהיה מיידי, זה לא שמיד עכשיו אנחנו נצייר, מתישהו זה יצויר מה הרעיון הרעיון הוא שמערכת ההפעלה שהראינו שציור זו פעולה כבדה ומערכת ההפעלה רוצה לעשות הכל לפני שהיא מנסה לצייר כי אם היא קודם תצייר אז ייקח הרבה זמן ורק אז היא תעשה דברים אחרים אז יכול להיות שהדברים

  5. 01:47

    האחרים יותר דחופים והם יתעכבו עבור המשתמש נגיד ואז המשתמש יגיד התוכנה הזו עובדת נורא לאט Windows עובדת נורא לאט הרעיון הוא שכשאנחנו עושים פעולה אז התגובה היא מיידית והציור זה משהו שיקרה ברקע אחד מהדברים ש-invalidate עושה זה שהיא אוגרת בוא נגיד שאני קורא במהלך הפקות שאני קורא ל-invalidate ועושה משהו ושוב קורא

  6. 02:24

    ל-invalidate ועושה עוד משהו ושוב קורא ל-invalidate כל עוד אני עושה עוד ועוד ועוד דברים אז המערכת ההפעלה רואה שהתוכנה עסוקה אז היא עדיין לא מודיעה לה לצייר את עצמה מחדש.

  7. 02:41

    רק אחרי שסיימתי לעשות את כל הדברים רק אז מערכת ההפעלה מודיעה לתוכנית לצייר את עצמה מחדש. בוא נגיד שאני בעצמי אני מצטער שאין לי הסבר יותר טוב אבל כרגע ככה אנחנו מציירים אני מניח לא בדקתי את זה אני מניח שאפשר לקרוא ישר מפה לפונקציה שמציירת תכף אני אסביר זאת אומרת הייתי רוצה

  8. 03:15

    אפילו שתנסו מפה ללקרוא לפונקציה pain יש פה יש אירוע סליחה זה לא בדיוק פונקציה זה event handler אבל אה הנה אני מבין אני קצת מבין את הבעיה למה אנחנו בדווקא אוקיי מה שאנחנו אומרים זה שאוקיי אני קורא ל invalidate אני לא צריך להקצות graphics וכשאני קורא ל invalidate אז בסופו של דבר paint מופעלת ולpaint כבר e מועברת ולe כבר יש את

  9. 04:02

    graphics ואז לא צריך להקצות graphics חדש כן זה זה נחמד אבל הרעיון הוא הרבה יותר לדעתי הוא הרבה יותר חזק מזה. אנחנו קוראים ל-invalidate, אנחנו אבל לא מנצלים את הפוטנציאל האמיתי שלה. ב-invalidate, נעשה קונטרול שיפט רווח, יכול לקרוא ל-invalidate עם כל מיני אפשרויות, ואחת מהן היא זה עם רקטנגל.

  10. 04:30

    בוא נראה עוד איזה אפשרויות, אפשר גם עם ריג'ן, שזה כמה רקטנגלים. הבנתי, יפה. אז בוא נגיד שלקרוא ל-invalidate עם רקטנגל, או לקרוא לה עם ריג'ן, שזה כמה רקטנגלים, זה כבר יותר עוצמתי.

  11. 04:47

    זאת אומרת יכול להיות שאנחנו מחליטים בסדר בוא נגיד אלה נושאים קצת מתקדמים שאני לא נכנס אליהם לא ניכנס אליהם במסגרת הסדרת הרצאות הזאת מה שהייתי רוצה שתנסו לעשות זה להגדיר פונקציה איפה פיינט שלנו להגדיר פונקציה שמציירת תקראו לה פיינט שזה הקוד שיש בתוכה כמובן שאתם לא תוכלו להשתמש באי גרפיקס אתם תצטרכו להקצות גרף x חדש אבל אתם תוכלו לקרוא לפונקציה הזו

  12. 05:22

    במקום לקרוא ל invalidate ותראו אז איך המערכת מתנהגת וזו שיטה אחת לעבוד אבל זו שיטה לא נכונה היא לא סטנדרטית אני לא יודע איזה תוצאות יהיו לזה אני מאוד אשמח אם תספרו לי אבל זו שיטה אחת השיטה שלנו אנחנו אומרים אנחנו נגיד למערכת ההפעלה את

לקורס המלא: פרויקט מעשי ב‑#C אונליין

ההרצאה הקודמת: פרויקט מעשי ב-#C - תוכנת צייר - חלק 14

ההרצאה הבאה: פרויקט מעשי ב-#C - תוכנת צייר - חלק 16

הרצאות קשורות מקורסים אחרים

  • תרגיל 24 - תוכנת צ'אט - חלק 1
  • פרויקט מעשי ב-#C - ספר טלפונים - חלק 1
  • תרגיל מעשי Delegate Event
  • שדרוג צייר שלנו על canvas

קורסים נוספים במסלול

  • קורס WinForms - תוכנות רגילות בווינדוס
  • פרויקט מעשי ב-#C - בונים מחשבון פשוט
  • פרויקט מעשי ב-#C - ספר טלפונים
  • קורס ADO.NET - חיבור אתר למסד נתונים
  • קורס תכנות מתקדם - #Advanced .NET C
  • קורס WCF - תקשורת למתקדמים בדוט-נט