PracticU

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

בלי כתוביותעם כתוביות
PracticU › פרויקט מעשי ב-#C - תוכנת צייר › פרויקט מעשי ב-#C - תוכנת צייר - חלק 10
מילון מושגים:
ArrayList - מבנה נתונים של רשימה דינמית שגודלה משתנה, הנפוץ בשפות כמו Java ו-C#.
לולאה - מבנה בקרה שחוזר על קטע קוד שוב ושוב כל עוד תנאי מתקיים או עבור כל פריט באוסף.
חריגה - מצב שגיאה שמתרחש בזמן ריצת התוכנית ומפסיק את המהלך הרגיל, אלא אם הקוד תופס ומטפל בו.
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).

פרויקט מעשי ב-#C - תוכנת צייר - חלק 10
בשיעור הזה שומרים את הנקודות של הקו הנוכחי ברשימה, כדי שהציור יוכל לשחזר את הקו בכל מצב. בסוף רואים שהקווים נשארים מחוברים, וזו בעיה שתיפתר בשיעור הבא.
השלבים העיקריים
1. רשימה של נקודות: קו הוא רצף של נקודות, ולכן משתמשים ב-ArrayList כדי לשמור אותן. מוסיפים using System.Collections לקובץ.
2. MouseDown: יוצרים נקודה חדשה מ-x ו-y ומוסיפים אותה לרשימה. זו הנקודה הראשונה של הקו.
3. MouseMove: בכל תנועה מוסיפים את הנקודה החדשה לרשימה, כך שהרשימה מכילה את כל הנקודות מאז הלחיצה.
4. Paint: לולאה עוברת על הנקודות ומציירת קו בין כל שתי נקודות עוקבות בעזרת DrawLine.
5. גבולות הלולאה: הלולאה צריכה לעצור בנקודה אחת לפני הסוף, כי הנקודה הבאה לנקודה האחרונה לא קיימת. אחרת מתקבלת חריגה של גלישה מהמערך.
טעויות נפוצות
- כשמקטינים את החלון ומגדילים אותו, כל הקווים מצוירים כקו אחד ארוך. הסיבה היא שהרשימה לא מבדילה בין קו לקו.
- בלי בדיקת גבולות נופלים על IndexOutOfRange בסוף הלולאה.
בסיום השיעור התלמיד יודע לשמור רצף נקודות ברשימה ולצייר אותו מחדש בעזרת לולאה.
השיעור הבא בקורס: פרויקט מעשי ב-#C - תוכנת צייר - חלק 11

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

  1. 00:00

    מטרה: שחזור כל קו בזמן אמת

  2. 00:32

    ArrayList לשמירת נקודות הקו

  3. 01:37

    יצירת קו חדש ונקודה ראשונה ב-MouseDown

  4. 02:17

    הוספת נקודות ב-MouseMove

  5. 03:16

    ציור כל הקו באירוע Paint

  6. 04:24

    לולאה שמציירת קטעים בין נקודות

  7. 05:57

    שמירת נקודה אחרונה לקטע הבא

  8. 06:36

    הנקודה הראשונה של הקו ב-Paint

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

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

  1. 00:11

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

  2. 00:34

    אז בעצם מה שאנחנו רוצים זה לשמור את הקווים שאנחנו מציירים. מה זה בעצם קו? קו זה בעצם רצף של נקודות. אז נשתמש ב-ArrayList כדי לשמור את הרצף של הנקודות של הקו.

  3. 00:58

    אז בואו נעשה את זה. אז איך נעשה את זה? ב-MountsDown אנחנו מעדכנים את X ואת Y. אבל בעצם מה שאנחנו רוצים זה לשמור קו. בשיעור הבא אנחנו גם נשמור קווים.

  4. 01:18

    כרגע אני רק רוצה לשמור קו אחד. אז מה שאני רוצה זה להגדיר קו. אני מגדיר ArrayList עם ה"צ'ופצ'יק", יעזור לנו ונוסיף לו את ה-Using. הרייליסט לין שווה לניו הרייליסט.

  5. 01:41

    תנו עכשיו הרייליסט חדש, אנחנו קוראים לו לין. במהוס דאון אני אשמור כבר את הנקודה הראשונה. איך נשמור נקודה?

  6. 01:55

    אנחנו נגדיר פוינט p שווה לניו פוינט וניתן לה שתי שדות, את x ואת y. ואז נוסיף את p ללין. נגיד לליין, תוסיף רק לך את p.

  7. 02:17

    עכשיו לליין יש את p. במאוס move אנחנו נוסיף שוב את הנקודות שעכשיו הצטרפו, לפני ש... או אחרי שנעדכן אותן.

  8. 02:34

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

  9. 02:47

    אנחנו אומרים שאחרי ש-e קיבלנו ב-e את x ואת y והתקרנו את x ואת y, אנחנו מייצרים נקודה מ-x ו-y ומוסיפים את הנקודה החדשה ל-line. אוקיי, אז יש לנו את כל הנקודות בקו.

  10. 03:12

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

  11. 03:24

    each point p in line ונקרא ל-e נקודה graphic אבל e נקודה graphic אנחנו נשתמש הפעם ב-draw line שמקבלת שתי נקודות ואנחנו רוצים לתת לה שתי נקודות אז אני יכול אומנם לתת לה את px ואת py בתור הנקודה בתור הקואורדינטה הראשונה בכל איטרציה אבל מה הקואורדינטה השנייה?

  12. 04:10

    אז האמת היא ש-Four is לא כל כך מתאים לנו. בואו נשתמש ב-Four. את הקטע קוד הזה אני אעביר בינתיים לכאן. 4 int i שווה לאפקט כל עוד i קטן מline.count מקדם את i.

  13. 04:37

    נגדיר עכשיו מסוג פוינט p1 את הנקודה הראשונה ב-line במקום ה-i. ואת פי שתיים במקום ה-I ועוד אחת, וניתר מפי אחת עד לפי שתיים.

  14. 05:20

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

  15. 05:43

    אז יש לנו את x, y, יש לנו הרייליס שנקרא line, במרס דאון אנחנו שומרים את x ואת y, טוב, זה בשביל המהוס מוב הראשון. המהוס מוב הראשון ירצה לצייר מהx y עד ל-e נקודה x, מהx y עד ל-e נקודה x, e נקודה y.

  16. 06:06

    אחרי זה המהוס מוב גם יעזקן את x ואת y. אוקיי, אז x ו-y חשובים מאוד בשביל לצייר במהוס מוב, אבל בנוסף על ההתכוננות למהוס מוב, אנחנו גם כבר מתכוננים ל-paint.

  17. 06:26

    ב-paint אנחנו נרצה לצייר מהנקודה הראשונה שבה mouse-down התרחש. אז אנחנו נגדיר point p שווה new point, ניצור נקודה מ-x ו-y ונוסיף את הנקודה הזו למערך line.

  18. 06:46

    זו הנקודה הראשונה. ב-mouse-move פה אנחנו מקבלים עכשיו את הנקודה השנייה. e נקודה x ו-e נקודה y זה כבר הנקודה השנייה.

  19. 06:56

    X ו-Y זה כבר הנקודה השנייה. זו אמנם הנקודה הראשונה של המאוס מוב מאז המאוס דאון, אבל זו הנקודה השנייה במערך. אז X-Y עכשיו זו הנקודה השנייה במערך, ניצור מ-X-Y נקודה ונוסיף את הנקודה הזו לליין.

  20. 07:26

    באירוע פיינט מה אנחנו עושים? באירוע פיינט

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

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

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

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

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

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

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