2011-04-27 61 views
0

我從來沒有真的不必擔心我的程序是多麼「漂亮」,但我現在正在爲市場營銷工作....反正我覺得這很簡單,但我似乎無法弄清楚爲什麼這不起作用。基本上我有一個帶有一堆圖片框的面板,我在它們後面繪製彩色矩形,在照片周圍創建一個僞「框架」。它根據是否選擇照片而具有不同的框架。默認選擇的照片在位置0,並在第一次繪製一切看起來不錯。但是當選擇改變時,繪畫事件會觸發並且沒有任何變化。這裏是代碼:簡單的圖形問題

private void panelPicSet_Paint(object sender, PaintEventArgs e) 
{ 
    Graphics g = e.Graphics; 
    g.Clear(panelPicSet.BackColor); 
    foreach (PictureBox picBox in panelPicSet.Controls) 
    { 
     if (picBox == selectedPhoto.PictureBox) 
      g.FillRectangle(new SolidBrush(Color.FromArgb(53, 73, 106)), new Rectangle(new Point(picBox.Location.X - 4, picBox.Location.Y - 4), new Size(picBox.Width + 8, picBox.Height + 8))); 
     if (picBox == hoveredPicBox) 
      g.FillRectangle(new SolidBrush(Color.FromArgb(53, 73, 106)), new Rectangle(new Point(picBox.Location.X - 2, picBox.Location.Y - 2), new Size(picBox.Width + 4, picBox.Height + 4))); 
     else 
      g.FillRectangle(new SolidBrush(Color.FromArgb(255, 232, 166)), new Rectangle(new Point(picBox.Location.X - 2, picBox.Location.Y - 2), new Size(picBox.Width + 4, picBox.Height + 4))); 
    } 
} 
+0

你在哪裏定義selectedPhoto變量? – 2011-04-27 17:44:10

+0

在圖片框中單擊事件。懸停設置在鼠標輸入/鼠標離開事件中。在繪畫事件中兩者都被正確識別。 – Nick 2011-04-27 17:55:16

回答

1

就像我懷疑這是一個簡單的答案。我必須在點擊和鼠標進入/離開事件中撥打panelPicSet.Invalidate()。我曾假設清除繪圖事件中的圖形對象正在執行相同的功能,但顯然不是。

+0

很高興你解決了它。對不起,我不能早點跟進,我一直在躲避龍捲風。 @Bill--感謝您的投票 - 下次我會盡可能地回覆,儘管可怕的天氣情況! – 2011-04-28 13:47:45