PracticU

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

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

פרויקט מעשי ב-#C - תוכנת צייר - חלק 33
השיעור מוסיף כלי טקסט לתוכנת הצייר: כפתור T, תיבת טקסט שמופיעה בלחיצה, והמרת הטקסט לאובייקט Text שנשמר ברשימת הצורות.
השלבים העיקריים
1. תיבת הטקסט: נוספה TextBox שמוסתרת בהתחלה. לחיצה על כפתור הטקסט ואחריה לחיצה על הציור מציגה אותה במקום הלחיצה.
2. המרה לאובייקט: כשמוציאים את הפוקוס מהתיבה, היא הופכת לטקסט שנשמר ברשימה. הוצע שמקש Escape יעלים את התיבה כאילו התחרטנו.
3. מחלקת Text: Text יורשת מ-Shape. הבנאי מקבל צבע, פונט, מיקום (x ו-y) ומחרוזת. Draw מציירת את המחרוזת בעזרת Graphics.DrawString. Update לא נדרשת, ולכן נשארת ללא שימוש.
4. פיצול הטיפול: ב-mouse down, הטיפול בטקסט מחזיר Shape, ומוסיפים אותו לרשימה בשיטה נפרדת שנקראת גם מהטיפול בטופס. כך אפשר להשתמש בה משני מקומות.
5. שינויי שמות: התיבה נקראה content, ובפרמטר של המחרוזת נשמר שם שאינו מתנגש עם המשתנה s.
6. נראות לפי סוג: כשכפתור אחר נבחר, תיבת הטקסט מוסתרת. נדרש טיפול דומה בכל סוג בחירה.
שימו לב
Update של טקסט נשארה ריקה בכוונה, כי הטקסט נקבע כבר בבנאי. הוצע לזרוק חריגה אם מישהו יקרא לה.
נשארו לתרגול: טיפול בצבע, בפונט ובהצגת הכפתורים לפי סוג הצורה.
השיעור הבא בקורס: פרויקט מעשי ב-#C - תוכנת צייר - חלק 34

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

  1. 00:00

    כלי טקסט חדש בלוח הציור

  2. 01:40

    הוספת תיבת טקסט מוסתרת לטופס

  3. 03:58

    יצירת תיבת טקסט בלחיצת העכבר

  4. 07:21

    כתיבה בתיבת הטקסט והפיכתה לטקסט

  5. 09:11

    יצירת אובייקט טקסט חדש מתיבת הטקסט

  6. 11:12

    מחלקת Text שיורשת מ-Shape

  7. 14:31

    מימוש Draw לטקסט עם Font ו-Brush

  8. 17:26

    שדה Font ומיקום הטקסט בבנאי

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

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

  1. 00:06

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

  2. 00:22

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

  3. 00:52

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

  4. 01:44

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

  5. 02:04

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

  6. 02:25

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

  7. 02:56

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

  8. 03:22

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

  9. 04:23

    אולי נציף את זה להתחלה זה היה פרי-הנד כאשר טקסט צ'ק אז האמת, פה אנחנו לא יוצרים שאיפ חדש מה אנחנו עושים?

  10. 04:50

    רק הופכים את הטקסט בוקס ל-Visible אז נגיד טקסט בוקס 1.Visible שווה ל-True אבל צריך גם להזיז אותה למקום הנכון אז טקסטבוקס אחד נקודה לוקיישן שווה לניו פוינט לאן זה אמור להגיע ל-e נקודה x e נקודה y בואו נראה איך זה נראה טקסטבוקס ניגע פה ניגע מה קרה במאוס אפ אנחנו בעצם אין אז לא יצרנו שייק

  11. 05:39

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

  12. 06:12

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

  13. 06:54

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

  14. 07:24

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

  15. 08:06

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

  16. 08:53

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

  17. 09:13

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

  18. 09:58

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

  19. 10:38

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

  20. 11:38

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

  21. 12:41

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

  22. 13:18

    להפוך את זה ליותר ויותר מושלם אבל תמיד יהיה איזשהו פנלטי שנשלם אז צבע אבל כן יש לנו אז אנחנו נקבל את צבע color C כן מעניין אותנו מה נעשה במקרה שכזה אנחנו את C יכולים להעביר אין לנו בעיה אבל מה נעשה עם with זה לא מעניין אותנו שנעביר 0 אז זהו, אבל דבר שכן נתנו זה הסטרינג בעצמו, מה בעצם, מה כתוב שם?

  23. 13:53

    סטרינג s, ואולי בעצם את זה אנחנו נשמור בתור private read only, נקרא לזה סטרינג, סטרינג l, סטרינג, אותו, ככה.

  24. 14:31

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

  25. 15:25

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

  26. 16:02

    וצריך בו נקודה, אז נגדיר pt, ונגדיר point pt שווה ל-new point, אז בעצם אנחנו צריכים את הקורדינטות, אז נגדיר private read only את point p, אולי נעשה את זה עם underscore נקרא לזה בעצם point המיקום שלה או שנקרא לזה לוקיישן נהיה קונסיסטנטיים עם המערכת הזו ונגדיר את זה עם אותיות קטנות

  27. 16:41

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

  28. 17:30

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

  29. 18:15

    ועוד ועוד, רק אנשים יותר ויותר מסובכים אז פה הוא רוצה פונט פרוטוטייפ, זהו, האמת היא שאני לא חייב לשמור את זה אני יכול לקבל את זה בקונסטרוקציה אז נגדיר כאן את פונט f תנו לנו אותו אנחנו פשוט נקבל אותו ונשמח איתו אז נגדיר פה פונט שווה ל-f וזהו וכאן יש לנו אחרי זה את under score font והכל מצוין רק נשנה את זה עם f כנה על מנת לשמר קונסיסטנטיות יפה אז זאת היא draw וב-update זה בעצם ההחלטה

  30. 19:11

    לצייר, ההחלטה לקבע מיקום, אז פה אנחנו בעצם נשמר את ה-X ואת ה-Y, נכון? אז זהו, שפה בעצם לא צריך, אין לנו בעצם צורך ב-update, אז אנחנו לא צריכים אותה, אז אם באמת מישהו יקרא לה, אז שיחטוף את החריגה הזו,

  31. 19:39

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

  32. 19:48

    אז for new, נגיד invalid operation או invalid program accession, לא היינו אמורים להגיע למצב כזה. השורה הזו לא אמורה לפעול.

  33. 20:02

    We should never use this function. Not we,

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

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

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

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

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

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

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