2014-02-13 195 views
1

首先,我是C#的初學者。 我有一個picturebox和一個計時器(啓用,間隔= 25)。 我在圖片框中插入了一隻鳥的gif圖像。 而在計時器事件中,我已經寫了,在PictureBox控件中翻轉圖像(鏡像)

bool positionBird = true; 

private void timer1_Tick(object sender, EventArgs e) 
{ 
    if (PictureBox1.Location.X == Screen.PrimaryScreen.Bounds.Width) 
    { 
     positionBird = false; 
    } 
    else if (PictureBox1.Location.X == 0) 
    { 
     positionBird = true; 
    } 

    if(positionBird) 
    { 
     PictureBox1.Left += 1; 
    } 
    else 
    { 
     PictureBox1.Left += -1; 
    } 
} 

但我想實現的是,當圖片框觸摸右 邊界條件變成假的,我想翻轉鳥的形象 的圖片框。現在這隻鳥正在做邁克爾傑克遜的月球漫步!

我試圖用下面的代碼翻轉鳥(鏡子鳥)。

else 
{ 
    PictureBox pict = new PictureBox(); 
    pict = PictureBox1; 
    pict.Image.RotateFlip(RotateFlipType.RotateNoneFlipX); 
    pict.Left += -1; 
} 

但它看起來很奇怪。它顯示翻轉圖像和正常圖像。 有人可以幫我解決這個問題嗎?正如我已經說過,我是一個初學者。一些簡單的 代碼與解釋將是非常有益的。也可以有人告訴我 我做錯了什麼?

+0

這是在WPF或窗口的形式?在WPF中,你可以設置變換來翻轉它 – DLeh

+0

它的Windows窗體。 –

+0

獲取圖像並在photoshop或任何其他程序中翻轉它們。然後自己畫他們 –

回答

1

請勿創建另一個圖片框。您看到原始圖片是因爲您沒有修改原始圖片,而是新創建的圖片。

所以修改後的代碼如下:

bool positionBird = true; 

private void timer1_Tick(object sender, EventArgs e) 
{ 
    if (PictureBox1.Location.X == Screen.PrimaryScreen.Bounds.Width) 
    { 
     positionBird = false; 
     PictureBox1.Image.RotateFlip(RotateFlipType.RotateNoneFlipX); // picture flips only once when touches boundary 
    } 
    else if (PictureBox1.Location.X == 0) 
    { 
     positionBird = true; 
     PictureBox1.Image.RotateFlip(RotateFlipType.RotateNoneFlipX); // picture flips only once when touches boundary 
    } 

    if(positionBird) 
    { 
     PictureBox1.Left += 1; 
    } 
    else 
    { 
     PictureBox1.Left += -1; 
    } 
} 
+0

Wasif,Iam試圖水平翻轉圖像。 pict.Image.RotateFlip(RotateFlipType.RotateNoneFlipX);工作正常。首先顯示翻轉後的圖像,然後顯示正常圖像,直到它到達左側。而gif中的動畫也不可用。 –

+0

好的,我正在編輯... –

+0

首先顯示翻轉圖像然後是正常圖像,然後一次又一次地繼續,直到它到達左側。當它到達左邊時,圖像中的動畫就消失了,它只顯示第一幀。 –