עבור לתוכן

עזרה ב C# עם טיפול בתמונות

Featured Replies

פורסם

שלום חברה.

אני רוצה לכתוב תוכנית שתציג לי מערך של אובייקטים מסוג bitmap בפלטפורמת windows forms (מנסה לעשות את זה כמה שיותר פשוט. התוכנית היא לפרוייקט סוף תואר).

הרעיון הוא שאני אוכל וויזואלית, להוסיף תמונה, להסיר תמונה, וכל זאת באופן וויזואלי.

חשבתי על מראה פשוט בסגנון thumbnails (כמו ש explorer של windows מציג קבצים של תמונות)

בנוסף, לכל תמונה יהיה מערך מסוג אובייקט מסויים שאותו אני מגדיר, והוא בא לייצג חיתוכים (crop) שאני לוקח מהתמונה.

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

יש לכם אולי כיוון בשבילי?

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

עשיתי כמה ניסויים עם datatable כמחזיק התמונות (כל שורה תכיל תמונה, ואת מערך החיתוכים שלה), ואובייקט datagridview כמציג הטבלא. הבעיה היא שאני כל פעם מסתבך איתם כאשר אני מנסה "לקסטם" אותם.

אשמח לתגובה.

בתודה

אודי

פורסם

יש המון דרכים להציג תמונות ב-windows forms והמון דרכים לשמור אותן.

אם אתה לא עובד מול DB אז אין ממש סיבה להשתמש ב-dataTable ודומיו - תעשה איזה class פשוט שמכיל תמונה ועוד מה שאתה רוצה לשמור עליה ותעשה מערך של כאלה אובייקטים וזהו... בשביל לשמור את זה לקובץ (אם בכלל צריך) אפשר בקלות לסרייל את זה (serialize). אבל זאת סתם הצעה, הצרכים שלך לא ממש ברורים.

לגבי הצגה אתה יכול לייצר picture-box דינמית, כמה, איפה ומתי שצריך. אתה גם יכול לעבוד עם גריד, סה"כ אפשר לעשות דברים לא רעים - אבל באופן אישי אני לא ממש אוהב את זה (זה באמת לא רע - יש לי בעיות אישיות עם הקונטרול הזה - הוא מעצבן אותי :nixweiss:).

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

יש המון אפשרויות, זה מאד תלוי מה בדיוק אתה מכיר/רוצה/צריך/אוהב...

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

כמה פונקציות ב-GUI שמטפלות בהוספה/הסרה (או אולי קלאס core שמכיל פונקציות וה-GUI משתמש בו, מה שאתה רוצה).

פורסם
  • מחבר

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

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

האם אתה מתכוון לכך שאני אשתמש ב EVENT של mouse clicked, וכך אני אדע באיזה אזור נלחץ העכבר וכך אדע איזו תמונה נלחצה ?

פורסם

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

בגדול רצוי לממש קונטרול תצוגה משלך שמבוסס על משהו קיים. לדעתי כדאי לך לרשת מ-ListView - לו יש מצב של Tiles שעליו ממש קל להתלבש בשביל מה שאתה צריך. יש לך אירוע נפרד לציור של כל טייל ובלחיצה אתה יכול לדעת על איזה טייל לחצו (אתה מקבל אינדקס). כמובן שלכל טייל יש בוליאני Selected ועוד שטויות שיעזרו לך לממש.

לדעתי זה יהיה לך הכי פשוט.

פורסם
  • מחבר

הסתדרתי עם ה datagridview. עובד טוב עד עכשיו. תודה אחי.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים