我需要在Winform中绘制像这样的图像的矩形:
我也应该更清楚。我想实现这个场景:让我们说有一个类似于" ABCDEFG"的形式的文本。当用户点击B字母时,我想添加一个带有颜色(高亮)的背景矩形到该字母和连续的3个字母(在这种情况下,我想要突出显示BCD)。
在一个方法中我尝试了这个:
for (int i = 0; i < 5; i++)
{
letterArea = new Rectangle(rectStartX, rectStartY, (int)Math.Ceiling(charSize.Width), (int)Math.Ceiling(charSize.Height));
rectStartX += (int)Math.Ceiling(charSize.Width);
}
我在此方法结束时调用Invalidate()。在OnPaintBackGround中,我有以下几行:
Rectangle rectContent = vsr.GetBackgroundContentRectangle(e.Graphics, this.ClientRectangle);
e.Graphics.FillRectangle(new SolidBrush(Color.Red), letterArea);
其中letterArea是一个类字段。我在另一个问题中读到,在循环中调用Invalidate()并不能保证调用OnPaintBackground。我对计算坐标不感兴趣,相反,我感兴趣的是我必须绘制矩形的方法以及在哪里调用Invalidate()以及什么是有效的解决方案? 提前谢谢。