如何在覆盖整个工作区域的表格上画圆圈?

时间:2010-10-15 08:25:57

标签: c# gdi+

如何在覆盖整个工作区域的表格上画圆圈?

我尝试过以下代码。但是当我重新调整表格大小时,圆圈就会扭曲。 alt text

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

        }
    }

2 个答案:

答案 0 :(得分:4)

您也应该挂钩ClientSizeChanged事件以触发重绘。

目前发生的事情是,Windows假设只有可见的小部分需要重新绘制,并剪掉其他所有内容。因此,您需要在调整大小时使完整表单(Invalidate())无效。

如果在调整大小时圆圈开始闪烁,请启用表单的双缓冲。

答案 1 :(得分:0)

尝试将Form的DoubleBuffered属性设置为true。