我从来没有真正担心我的节目之前有多“漂亮”,但我现在正致力于市场营销......无论如何,我想这很简单,但我似乎无法弄清楚为什么这不起作用。基本上我有一个带有一堆图片框的面板,我在它们后面绘制彩色矩形,在照片周围创建一个伪“框架”。它根据是否选择了照片而具有不同的帧。默认选择的照片位于位置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)));
}
}
答案 0 :(得分:1)
就像我怀疑这是一个简单的答案。我不得不在点击和鼠标输入/离开事件中调用panelPicSet.Invalidate()
。我曾假设清除paint事件中的图形对象执行相同的功能,但显然不是。