עבור לתוכן

איך משנים תמונה כל כמה שניות ב#C, ב FORM ?

Featured Replies

פורסם

הצגתי תמונה בwindows form ואני רוצה שכל כמה שניות התמונה תשתנה לתמונה אחרת, כלומר, כל כמה שניות התמונה תשתנה לתמונה השניה וחזרה לראשונה.

מישהו יודע איך עושים את זה ?

פורסם

תיצור Image Array, ולפי Event כלשהו(לא חייבים טיימר מובנה) אפשר להשתמש בשעון של המערכת אבל טיימר בהחלט יכול להיות פתרון פשוט יותר תטען תמונה אחרת מהמערך.

פורסם
  • מחבר

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

פורסם

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

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

http://msdn.microsoft.com/en-us/library/system.windows.forms.timer.aspx

(ב-.NET יש שלושה קלאסים של טיימר, שכל אחד עובד קצת אחרת. הקלאס הזה קצת יותר פשוט)

פורסם
  • מחבר

לא, לצערי אני לא יודע להחליף תמונה, אני מציג את התמונות שלי דרך BITMAP, כלומר, יש לי שתי תמונות :

1. Bitmap a = new Bitmap("c:/a.jpg");

2. Bitmap b = new Bitmap("c:/b.jpg");

a משתנה מסוג BITMAP שמחזיק את התמונה הראשונה וb משתנה גם מסוג BITMAP שצמחזיק את התמונה השניה

ועכשיו אני רוצה שכל שניה התמונה הראשונה תהפוך לשניה ולהיפך.

אני לא מצליח להבין איך לעשות את זה דרך הקוד שאתה שולח לי ב MSDN

נ.ב

אני לא משתמש בMAIN אלא ב PAINT

אשמח לעזרה

פורסם

הדף שנתתי מסביר איך משתמשים בטיימר, בלי קשר לתמונות.

תעלה לכאן את הקוד שלך (תשתמש בטג קוד - כפתור # למעלה - כדי שייראה נורמלי) כדי שנוכל להבין יותר טוב במה מדובר.

פורסם
  • מחבר


Bitmap a = new Bitmap("c:/a.jpg");
Bitmap b = new Bitmap("c:/b.jpg");

private void Paint(object sender, PaintEventArgs e)
{
g.DrawImage(a, new RectangleF(0, 0, 40, 40));
}

[br]פורסם בתאריך: 16.04.2009 בשעה 01:10:30


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

תעשה משהו כזה בערך:

Bitmap a = new Bitmap("c:/a.jpg");
Bitmap b = new Bitmap("c:/b.jpg");
Bitmap currImage = a;
bool currImageIsA = true;
System.Windows.Forms.Timer myTimer;

// This is the method to run when the timer is raised.
private void TimerEventProcessor(Object myObject, EventArgs myEventArgs) {

if (currImageIsA)
currImage = b;
else
currImage = a;

currImageIsA = !currImageIsA;

Refresh();
}


private void Paint(object sender, PaintEventArgs e)
{
g.DrawImage(currImage, new RectangleF(0, 0, 40, 40));
}


private void Form1_Load(object sender, System.EventArgs e)
{
myTimer = new System.Windows.Forms.Timer();
myTimer.Tick += new EventHandler(TimerEventProcessor);

// Sets the timer interval to 1 seconds.
myTimer.Interval = 1000;
myTimer.Start();

}

כשהטופס נוצר, הוא יוצר טיימר. הטיימר אחראי כל שנייה להחליף את התמונה הנוכחית, ולעשות Refresh לטופס.

פורסם
  • מחבר

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

לא ברור לי היכן צריכות להיות ממוקמות השורות:

1. System.Windows.Forms.Timer myTimer = new System.Windows.Forms.Timer();

2. הפונקציה TimerEventProcessor

3. האם כל השורות שבתוך ה - Form1_Load צריכות להיות שם או ש השורה הזאת

myTimer.Tick += new EventHandler(TimerEventProcessor);

צריכה להיות ממוקמת ב Form1.Designer.cs ?????

תודה על הסבלנות

פורסם

עשיתי טיפה תיקונים (ה-new Timer צריך להיות בתוך Form1_Load, וה-TimerEventProcessor לא צריכה להיות סטטית).

כל הקוד הזה צריך להיות בקוד של הטופס.

ב-Form1.Designer.cs אתה לא צריך לגעת.

פורסם
  • מחבר

היי, תתעלם מההודעה האחרונה, הצלחתי, המון המון תודה.

רק בעיה אחת יש לי עכשיו, בשביל שאהי אעשה את הההשמה שרצית Bitmap currImage = a הוא רוצה שגם a וגם currImage יהיו STATIC.

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

Member 'Cell.pic' cannot be accessed with an instance reference; qualify it with a type name instead

יש לך מושג למה ?

פורסם

עשיתי טיפה תיקונים (ה-new Timer צריך להיות בתוך Form1_Load, וה-TimerEventProcessor לא צריכה להיות סטטית).

כל הקוד הזה צריך להיות בקוד של הטופס.

ב-Form1.Designer.cs אתה לא צריך לגעת.

למה לא לעשות את השינוי תמונה בtimer_tick_changed ולטעון את התמונות כresource לפרוייקט עצמו?

פורסם

אני לא חזק ב-GUI :P פשוט הלכתי עם מה ש-morany כתב בהתחלה והמשכתי משם.

ארכיון

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

דיונים חדשים