2013-08-23 81 views
0

我有事件功能上點擊啓動,並在其中我有一個圖形指令Graphics.Fillrectangle不會更新

private void pictureBox1_Click(object sender, EventArgs e) 
    { 
     switch (modCLick) 
     { 
      case 2: 
        session.g.FillRectangle(Brushes.Tomato, MousePosition.X, MousePosition.Y, 50, 100); 
       break; 
     } 
     ModCLick = 1; 
    } 

當我啓動該程序的點擊什麼也不做,但如果我按一個鍵(僅限某些鍵),所做的更改適用(我可以看到矩形)。爲什麼沒有正確更新? PS:不要擔心案例說明。

+0

雖然我被告知不要擔心,但是你知道你的開關變量和最後一個賦值是不同的對象嗎?不知道這是否重要。 – gunr2171

+0

差不多,但我不認爲這是問題所在。 – Razvan

回答

0

在全局變量中存儲圖形實例是一個非常糟糕的想法。讓它看起來像這樣:

using (var g = Graphics.FromImage(pictureBox1.Image)) { 
    g.FillRectangle(Brushes.Tomato, MousePosition.X, MousePosition.Y, 50, 100); 
    pictureBox1.Invalidate(); 
} 

Invalidate()調用是你正在尋找的。 PictureBox只能告訴你改變了Image屬性,它不能告訴你改變了圖像內容

+0

工程就像一個魅力!非常感謝你! – Razvan