PracticU

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

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

פרויקט מעשי ב-#C - תוכנת צייר - חלק 36
השיעור ממשיך את בחירת הצורות: צבע הפאנל לפי הצורה הנבחרת, ובדיקת פגיעה בקו, במלבן החופשי ובטקסט.
השלבים העיקריים
1. צבע הפאנל לפי הבחירה: כשבוחרים צורה, צבע הרקע של הפאנל שמציג את הצבע הנבחר מתעדכן לצבע הצורה. זו ההתנהגות שהמרצה הביא מ-NetMeeting. לשם כך נוסף get לתכונת Color.
2. בדיקת פגיעה בקו: לקו שני קצוות, P1 ו-P2. הקו מתואר כמשוואה y = mx + b, כאשר m הוא השיפוע ו-b נקודת החיתוך עם ציר y. נקודה נחשבת פוגעת אם היא קרובה לקו בטווח של שלוש פיקסלים.
3. שמירת השיפוע והחיתוך: בגלל שהחישוב חוזר על עצמו, m ו-b נשמרו כשדות פרטיים וחושבו פעם אחת. P2 נקבע אחרי הבנאי, ולכן לא הפך ל-read only.
4. בדיקת טווח: הטווח נקבע לפי הנקודה השמאלית והימנית של הקו, כך שנקודה על המשך הקו, מחוץ לקטע, לא נחשבת פגיעה.
5. מלבן חופשי: לכל FreeHand נשמר מלבן תוחם: שמאל, ימין, עליון ותחתון, שמתעדכן עם כל נקודה חדשה. פגיעה נבדקת מול המלבן הזה.
6. טקסט: פגיעה בטקסט נבדקת מול מלבן משוער, לפי אורך המחרוזת כפול 10 פיקסלים לכל תו, וגובה של 10 פיקסלים בערך. המרצה מסביר שזו הערכה פשוטה שאפשר לשפר.
7. באג בבחירת FreeHand: פגיעה ב-FreeHand לא תמיד נבחרה נכון, והמרצה השאיר את הסיבה לבירור.
שימו לב
המרצה מציין שהחישובים האלה דורשים גיאומטריה בסיסית, ושהמתמטיקה הטריוויאלית מספיקה לפתרון.
השיעור הבא בקורס: פרויקט מעשי ב-#C - תוכנת צייר - חלק 37

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

  1. 00:00

    תיקון צבע הרקע של צורה מסומנת

  2. 02:13

    דרישה: צבע הרקע משתנה בבחירה

  3. 04:13

    הוספת get לתכונת SelectedColor

  4. 06:17

    תיקון בנאי שלא קיבל את הצבע

  5. 08:40

    מימוש IsPointIn במחלקת Line

  6. 10:11

    משוואת הקו לבדיקת לחיצה עליו

  7. 13:22

    חישוב השיפוע m של הקו

  8. 18:01

    שמירת m ו-b כשדות פרטיים

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

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

  1. 00:11

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

  2. 00:49

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

  3. 01:14

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

  4. 01:50

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

  5. 02:03

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

  6. 02:29

    When selecting shapes should to the color we are in. טעות שלנו, אחרי בדיקה ב-NetMeeting אנחנו רואים שכאשר אני נוגע באובייקט כחול, הצבע הבחור, הסלטת color, אמור להפוך להיות כחול.

  7. 03:11

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

  8. 04:06

    התווה לנו אני אמור לשנות את הצבע של הפאנל SelectedColor להיות SelectedColor הבעיה היא שכרגע color הוא רק set אין לו get צריך להוסיף לו גם set גם get אז נכתוב פה get ופה פשוט return את color ונריץ את זה פילד ריקטנגל פור סלקטד אני נוגע בו הוא נהיה אפור למה הוא נהיה אפור כמו כחול למה הוא נהיה

  9. 05:17

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

  10. 06:22

    כנראה שלא, שייפ, בקונסטרקטור לא שמענו את הטבע, זו הייתה טעות, שיפטף 5, דבר ראשון, קלר שווה ל-C, ווויטס שווה לוויטס, דבר ראשון, נעים שוב, וויטס הוא פלוט וזה אינט, כן, זה חייב להיות פלוט, אז בסדר,

  11. 06:57

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

  12. 07:28

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

  13. 08:18

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

  14. 09:14

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

  15. 09:39

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

  16. 10:11

    שמסביר איך בעצם ניתן לפגוע בקו, אז הרעיון הוא שיש לנו את פי 1 ואת פי 2, זה מה שכתוב כאן, יש לנו את פי 1 ואת פי 2 בליין, יש לנו שתי נקודות שמגדירות קו, זו פי 1 וזו פי 2, השאלה היא האם פוינט 3, x3, y3, כאן p1 זה xy, p2 זה x2, y2, והשאלה היא האם פוינט נתונות שאנחנו מעבירים כאן,

  17. 10:50

    זאתי פוינט 3, האם היא פוגעת בקו, בקו הסגלגל? אז איך נדע? זה נורא פשוט. משוואה של קו, כן, שהגדרנו פה ציר y וציר x, משוואה של קו אומרת שy שווה ל-mx ועוד b.

  18. 11:13

    רגע, נעשה את זה. המשוואה של קו אומרת ש-y שווה ל-mx ועוד b. y שווה ל-m זה ה-slope, זה הזווית כפול x, ועוד b, b זה הנקודה שבה הקו פוגע בציר y. ומה הערך של m? הערך של m זה ה-slope, זה הזווית.

  19. 11:45

    מה הזווית? הזווית זה x פחות x2 חלקי y פחות y2. x פחות x2 חלקי y פחות 2 זו הזווית. מה הערך של b? אם ניקח את אחת מהנקודות, נגיד p1, ונציב את זה במשוואה הזו ונהפוך את זה y שווה לmx ועוד b אבל b שווה לy פחות mx אז b שווה לy פחות mx אם כבר יש לי את m וניקח אחת מהנקודות ויש לי את x לy אז אני יכול לחשב את b

  20. 12:14

    אז יפה אז עכשיו יש לי את m ואת b ואז אני לוקח נקודה שלישית את הנקודה שאני רוצה לחשב אם היא פוגעת x3 y3 ואם אני מבין פה את x3 ופה את y3 ואכן זה שווה זה אומר שפגעתי בנקודה אבל אנחנו נראה שזה נורא קשה לפגוע בדיוק בנקודה אז אנחנו בעצם רוצים לפגוע אולי קצת מעל ה-Y או קצת מתחת ל-Y

  21. 12:39

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

  22. 13:22

    האלה אז אנחנו הולכים לליין לחשב את החישובים איד פוינט אין קודם כל אני צריך לחשב, נחזור שוב לציון, אני צריך לחשב קודם כל את m אז אם m שווה לx, אז יש לי שתי נקודות יש לי את p1x פחות p2x חלקי p1y, סליחה זה y הפוך זה y נסיים את זה פחות p2 אבל את כל הקטע של הy ניקח איתנו או פשוט את זה נעביר ככה זה y חלקי x זה לא

  23. 14:30

    x חלקי y זה y חלקי x אז אני אשנה את זה יפה אז יש לנו את m אחרי שיש לנו את m אנחנו רוצים לחשב את b, b שווה לy פחות mx אינט b שווה לy פחות mx אז קודם כל זה עלול להיות פלואוט כדאי שנתכונן לזה ואז זה פחות זה, זה יהיה אינט אז את זה אני רוצה להמיר להיות פלואוט אז את זה אני אמיר להיות פלואוט למה אני עושה את זה?

  24. 15:20

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

  25. 15:48

    נגיד את p1, נקודה y mx, מה זה x? זה p1, נקודה x, זה b אז יש לנו את b, אז כל מה שנותר זה לחשב את y לראות האם המשוואה הזו מסוימת עבור הנקודה החדשה עכשיו, את שתי אלה, P1 ו-P2, אני לא יכול להגדיר אותם כ-read-only בואו רגע, ננטרן את השורות האלה שרציקו לנו

  26. 16:30

    האם אני יכול להגדיר את P1 ו-P2 כ-read-only, כי מעניין אותי האם הקו הזה משתנה, הוא לא אמור להשתנות נעשה F6, לא מתקמפל, כי זה אמור להחזיר בוליאן נגיד, return, fold, F6, succeeded, בואו ננסה להפוך את זה ל-read-only, F6 אה, זה כן עובד, סבבה,

  27. 17:02

    אז נעשה את זה רידוני, ואז, אה, פי שתיים לא יכולה להיות רידוני, זה מבאס מאוד, אבל עם זה נתמודד, פי שתיים לא תהיה רידוני, אבל למעשה אמורה להיות רידוני, רק פעם אחת מקבלת ערך וזהו, חבל, אבל זה מה שיש, אבל זה אמור להיות רידוני, שהייתי חייב לעשות את זה כ-n רידוני, נשים פה אפילו כזה, וכזה, b treated s כי זה לא

  28. 17:50

    אמור להשתנות בזמן ההוצאה אז יפה אז בעצם מה שרציתי זה את החישוב הזה בעצם לעשות שאני מקבל את הערך של p2 ויכול לבצע את החישוב m time אחרי זה לעשות שוב חישובים ואז אני יכול לשמור את m ואת b אז אני יכול להגדיר יש לי private float m וזה עם underscore וprivate int b גם b יכול להיות float למה בעצם שלא

  29. 18:34

    תהיה איזה פעולה שעושה שם כפול נעשה את זה עם underscore את ה-b אז יש לי את m ואת b אמורים אפילו זמינים לי כך שכשאני עושה את is point n אני יכול מאוד מהר לקבל את התשובה אז אם מה התשובה התשובה שהמשוואה הזו מתקיימת עבור כל עוד הערך הימני קטן מ-y ועוד 3 וגם הערך הימני גדול מ-y פחות

  30. 19:19

    3 נגיד 3 זה האזור הצהוב הלי ווי שאנחנו מאפשרים חופש שאנחנו מאפשרים פוסט שאנחנו מאפשרים אז אם אז אני חושב את הצד הימני של המשוואה הצד הימני של המשוואה זה בעצם y אז אני אגדיר פלוט y שווה ל-mx ועוד b שווה ל-m כפול x ועוד b זה y אם y יותר גדול זה על פי המשוואה שלנו וזה כן קצת מתנגשים אחד בשני אז אם זה על פי

  31. 20:24

    המשוואה שלנו לא יודע איך לקרוא לזה אפילו אני אקרא לזה yy כי אין לזה כמעט משמעות זה

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

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

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

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

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

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

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