תכנות וזיהוי/פונקציות לטיפול בתמונות קבצים וחלונות
פונקציות ספריה לטיפול בתמונות
עריכההפונקציה LoadBitmap
עריכההיא טוענת תמונת מפת סיביות מתוך קובץ הריצה לתוך משתנה מסוג מצביע-לתמונת-מפת-סיביות.
כך מוצגת שורה בה ממומשת הפונקציה בתוכנית :
;hbmMain = LoadBitmap(Hi, "khaki")
הפונקציה מקבלת 2 משתנים כמו שנזכר בטבלה :
משתנה מספר | מסוג | הסבר |
---|---|---|
1 | HINSTANCE | המצביע לחלון התוכנית |
2 | מחרוזת תווים | המכיל את שם קובץ התמונה |
הפונקציה BitBlt
עריכההיא לוקחת תמונת מפת סיביות ממקור אחד (הנמצא בתוך משתנה של תמונת מסך המחשב) וצובעת את התמונה (או חלק מהתמונה ) על מקור אחר .
כך מוצגת השורה בה ממומשת הפונקציה בתוכנית :
;BitBlt(hdc,0,0,b.bmHeight,b.bmWidth, hdcMemory,0,0,SRCPAINT)
הפונקציה מקבלת 9 מִשתנים ש - 5 מהם חשובים לתוכנית כל השאר מאופסים :
מִשתנה מספר | מסוג | הסבר |
---|---|---|
1 | HDC | המצביע לחלק הגרפי של החלון שניצבע |
4 | int | גובה התמונה |
5 | int | רוחב התמונה |
6 | HDC | המצביע לחלק הגרפי שם נמצא מקור התמונה |
9 | DWORD | הצביעה מבוצעת ע"י הפעלת "או לוגי" (OR) בין hdc ל - hdcMemory . |
להסבר כל המשתנים שהפונקציה מקבלת עיין בפרקים הבאים.
פונקציות ספריה לטיפול בחלונות
עריכההפונקציה WinMain
עריכהבתוכנה החלונית בשפת CPP היא הפונקציה ממנה מתחילים לפעול
היא מקבלת 4 מִשתנים ומחזירה משתנה חמישי :
- מקבלת מִשתנֶה מסוג HINSTANCE שהוא מייצג את מספר החלון (שכאן עתיד לא להיווצר) .
- מקבלת מִשתנֶה מסוג HINSTANCE שלא מעניין אותי .
- מקבלת מִשתנֶה מסוג LPSTR שלא מעניין אותי .
- מקבלת מִשתנֶה מסוג int שלא מעניין אותי .
- מחזירה מִשתנֶה מסוג int המסמל אם היא צלחה במשימה .
צריך לשים לב שהפונקציה הזאת מופעלת על ידי מערכת ההפעלה , לכן תפקידי הקלט פלט מתהפכים :
משתני הקלט בה הם משתנים שאנו מקבלים ממערכת ההפעלה, ומשתני פלט הם משתנים שאנו מחזירים למערכת ההפעלה.
הפונקציה CreateWindowEx
עריכההיא מקבלת הרבה מִשתנים. אותנו מעניין שהיא מקבלת מִשתנֶה hInstance מסוג HINSTANCE המייצג את מספר החלון,
מנסה ליצור חלון, ומחזירה משתנה שהוא מסוג מצביע לחלון HWND .
מִשתנֶה | מסוג | מקבל ערך | שתפקידו |
---|---|---|---|
1 | DWORD | WS_EX_CLIENTEDGE | לסמן שהחלון הזה הוא שייך לחלון הראשי, לשולחן העבודה |
2 | LPCSTR | "MyWindowClass" | שם מארז החלון , בתוכנית הזאת הוא לא משמש לכלום |
3 | LPCSTR | " זיהוי צבע " | שם החלון,בתוכנית הזאת הוא לא משמש לכלום |
4 | DWORD | WS_OVERLAPPEDWINDOW | לקבוע שהחלון חופף לחלון שולחן העבודה |
5 | int | CW_USEDEFAULT | בררת מחדל למיקום המאוזן של החלון ביחס לצג, בתוכנית הוא לא משמש כלום |
6 | int | CW_USEDEFAULT | בררת מחדל למיקום המאונך של החלון ביחס לצג, בתוכנית הוא לא משמש כלום |
7 | int | רוחב החלון | מפני שבתוכנית לא מציגים את החלון יכול להיות שהמספר 1 מספיק |
8 | int | אורך החלון | מפני שבתוכנית לא מציגים את החלון יכול להיות שהמספר 1 מספיק |
9 | HWND | NULL | מצביע לחלון האבא , אותנו לא מעניין |
10 | HMENU | NULL | תפריט החלון , לא מעניין |
11 | HINSTANCE | hInstance | מספר החלון שקיבלנו מהפונקציה WinMain |
12 | LPVOID | NULL | משתנה נוסף לא מעניין |
כך מוצגת הפונקציה בתוכנית :
hwnd = CreateWindowEx(
WS_EX_CLIENTEDGE,
"MyWindowClass" ,
" זיהוי צבע ",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
WinHeight,WinWidth,
NULL, NULL, hInstance, NULL);
פונקציות ספריה לתפיסה ולשחרור תמונת מסך (צג המחשב)
עריכהלתפיסת מסך
עריכההפונקציה GetDC
עריכהכך מוצגת הפונקציה בתוכנית :
;hdcWindow = GetDC(hwnd)
תפקיד הפונקציה : בהינתן חלון להחזיר את החלק הגרפי שלו, כדי לדוגמה, ליצור ממנו תמונת מפת סיביות .
מספר המִשתנה | מסוג | בעזרתו הפונקציה |
---|---|---|
1 | HWND , משתנה קלט | מקבלת מצביע לחלון |
2 | HDC , משתנה פלט | מחזירה מצביע לחלק הגרפי של החלון |
הפונקציה GetDCEx
עריכההיא פיתוח של הפונקציה GetDC , בעזרתה אפשר לתפוס חלון, וכל החלונות השייכים לו כתמונה אחת.
לה יש שלושה משתני קלט. האמצעי לא מעניין אותנו, לכן אצלנו הוא מאופס על ידי הקבוע NULL .
המִשתנה האחרון מסוג DWORD (שמשמש כאן לקבלת קבועי ספריה) אומר שהחלון הוא האבא של כל החלונות שיראו בתמונה.
נוסף לכך (וגם לוגי) כל שטחי החלונות השייכים לחלון, ייראו בתמונה. כך מוצגת הפונקציה בתוכנית :
MyHdc = GetDCEx(
hwnd,NULL,
DCX_PARENTCLIP|
DCX_EXCLUDERGN);
הפונקציה CreateCompatibleDC
עריכהכך מוצגת הפונקציה בתוכנית :
;hdcMemory = CreateCompatibleDC(hdc)
תפקיד הפונקציה ליצור בזיכרון המחשב מצביע לחלק הגרפי של החלון
התואם מצביע לתמונת חלון, כך שהמתכנת יוכל לעבד בזיכרון את תמונת החלון,
בלי להפריע לתצוגת החלון.
מספר המִשתנה | מסוג | בעזרתו הפונקציה |
---|---|---|
1 | HDC | מקבלת מצביע לחלק הגרפי של החלון |
2 | HDC | מחזירה מִשתנה התואם את החלק הגרפי של החלון |
הפונקציה SelectObject
עריכהכך מוצגת הפונקציה בתוכנית :
;SelectObject(hdcMemory, hbmMain)
תפקידה לשייך את המצביע לחלק הגרפי של החלון, לעצם מסוים . אצלנו : לשייך לתמונת מפת סיביות .
הפונקציה GetObject
עריכהכך מוצגת הפונקציה בתוכנית :
;GetObject(hdcMemory, sizeof(BITMAP), &b)
תפקידה להקצות זיכרון לעצם ששויך למצביע לחלק הגרפי של החלון.
לשחרור הזיכרון
עריכההפונקציה DeleteDC
עריכהכך מוצגת הפונקציה בתוכנית :
;DeleteDC(hdcMemory)
תפקידה לשחרר את זיכרון המחשב שהוקצה למצביע לחלק הגרפי של החלון.
הפונקציה ReleaseDC
עריכהכך מוצגת הפונקציה בתוכנית :
;ReleaseDC(hwnd,MyHdc)
תפקידה לשחרר חלון ממצביע לחלק הגרפי שלו .
פונקציות לטיפול בקבצים
עריכההפונקציות מיובאות מקובץ הספרייה "stdio.h" שמשמעותו : קלט - פלט סטנדרטי .
הפונקציה fopen
עריכהפונקציה לפתיחת או יצירת קובץ חדש , אם הקובץ לא קיים. אם קיים קובץ בשם הזה , הקובץ הקודם נהרס .
המִשתנה | מסוג | הסבר הסוג | תפקיד |
---|---|---|---|
קלט 1 | const char* | מחרוזת תווים קבועה | שם הקובץ |
קלט 2 | const char* | מחרוזת תווים קבועה | סוג הפעולה, "w" מסמל ריקון והתחלת כתיבה. |
המוחזר | FILE* | מצביע לקובץ | אם לא נפתח קובץ מוחזר ערך השווה ל- 0 . |
כך מוצגת הפונקציה בתוכנית :
;fp = fopen(ColorFile,"w")
הפונקציה fclose
עריכהסוגרת את הקובץ . היא מקבלת כקלט את המצביע לקובץ . כך מוצגת הפונקציה בתוכנית :
;if(fp) fclose(fp)
משמעות השורה : אם יש ערך למצביע לקובץ (כלומר הקובץ קיים ופתוח ) סגור את הקובץ.
הפונקציה fprintf
עריכהפונקציה לכתיבה בקובץ , השם שלה מורכב מ - print שמשמעותו הדפס, ושני - f בהתחלה ובסוף.
כנראה f מסמן קובץ , ואז משמעות הפקודה כך : פתח קובץ (התחילית)והדפס לתוכו (הסופית)
כך מוצגת הפונקציה בתוכנית :
;fprintf(fp," red %3d green %3d blue %3d", r, g, b)
לפונקציה יכולות להיות בלי סוף משתני קלט במקרה שלנו כשכותבים בקובץ 3 מספרים
בפונקציה יש 5 משתנים , המופרדים זה מזה בפסיקים :
מספרו | מסוג | הסבר הסוג | הסבר נוסף |
---|---|---|---|
1 | FILE* | מצביע לקובץ | הקובץ בו כותבים |
2 | מחרוזת תווים קבועה | רשימה שעל פיה נכתבים המשתנים | red ייכתב בקובץ , % עבור צורת התצוגה ,3d לשם מספר שלם בעל 3 ספרות |
3 | int - מספר שלם | התחום של 4 ספרות בבסיס 16 | אצלנו r מסמל את כמות הצבע האדום |
4 | int - מספר שלם | התחום שלו מתחיל בערך ב - (10,0000-) ומסתיים ב - 10,000 | אצלנו g מסמל את כמות הצבע הירוק |
5 | int - מספר שלם | אצלנו משתמשים לצבעים בתחום חלקי שלו בין 0 עד 256 | אצלנו b מסמל את כמות הצבע הכחול |