2011-04-27 58 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