简单的图形问题

时间:2011-04-27 17:14:33

标签: c# winforms graphics paint

我从来没有真正担心我的节目之前有多“漂亮”,但我现在正致力于市场营销......无论如何,我想这很简单,但我似乎无法弄清楚为什么这不起作用。基本上我有一个带有一堆图片框的面板,我在它们后面绘制彩色矩形,在照片周围创建一个伪“框架”。它根据是否选择了照片而具有不同的帧。默认选择的照片位于位置0,并且在第一次绘制时,一切看起来都很棒。但是当选择被更改时,paint事件将触发并且不会发生任何变化。这是代码:

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)));
    }
}

1 个答案:

答案 0 :(得分:1)

就像我怀疑这是一个简单的答案。我不得不在点击和鼠标输入/离开事件中调用panelPicSet.Invalidate()。我曾假设清除paint事件中的图形对象执行相同的功能,但显然不是。