如何在覆盖整个工作区域的表格上画圆圈?
我尝试过以下代码。但是当我重新调整表格大小时,圆圈就会扭曲。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
g.SmoothingMode = SmoothingMode.AntiAlias;
Pen redPen = new Pen(Color.Red, 3);
Rectangle rect = new Rectangle(0,0, this.ClientSize.Width, this.ClientSize.Height);
g.DrawEllipse(redPen, rect);
}
}
答案 0 :(得分:4)
您也应该挂钩ClientSizeChanged事件以触发重绘。
目前发生的事情是,Windows假设只有可见的小部分需要重新绘制,并剪掉其他所有内容。因此,您需要在调整大小时使完整表单(Invalidate()
)无效。
如果在调整大小时圆圈开始闪烁,请启用表单的双缓冲。
答案 1 :(得分:0)
尝试将Form的DoubleBuffered属性设置为true。