在带有 winforms 的 .NET 3.5 中,我正在制作一个图像缩略图查看器控件。
主控件派生自a FlowLayoutPanel
,它获取图像列表并显示它们。显示的图像是由CustomControl
我在其上绘制的和随附的标签以及控件的边框制成的。可以通过单击和 yada yada 来选择图像,就像您对那种控制所期望的那样。
这是一个截图来说明:
那部分工作正常。问题是当我滚动FlowLayoutPanel
派生控件时,边框没有正确重绘,并且有剩余的行,如此屏幕截图所示:
我已将FlowLayoutPanel
图像和图像都设置为双缓冲。并且图像和标签没有问题,所以我怀疑它是别的东西,但无法弄清楚它是什么。
我认为用于绘制图像边界的方法可能有问题。这是我使用的代码:
protected override void OnPaint(PaintEventArgs e)
{
Rectangle captionContainer;
captionContainer = new Rectangle();
if (!string.IsNullOrEmpty(this.Caption))
captionContainer = this.DrawCaption(e.Graphics);
if (this.Image != null)
this.DrawImage(e.Graphics, captionContainer);
this.Size = new Size(this.Padding.Horizontal + this.ImageSize.Width, this.Padding.Vertical + this.ImageSize.Height + captionContainer.Height);
ControlPaint.DrawBorder(e.Graphics, e.ClipRectangle, this.currentBorderColor, ButtonBorderStyle.Solid);
base.OnPaint(e);
}
如果需要,我会发布更多代码,但它很长,所以我不想放太多代码,除非确实有必要。
任何人都可以看到这是哪里出错了吗?