2010-10-15 62 views
2

如何在覆蓋整個工作區域的窗體上繪製圓圈?如何在覆蓋整個工作區的表單上繪製一個圓圈?

我試過下面的代碼。但是當我重新確定表格的大小時,這個圓圈是扭曲的。 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); 

     } 
    } 

回答

4

您應該掛鉤到ClientSizeChanged事件以及觸發重繪。

當前發生的情況是,Windows假定只有變成可見的小部分需要重繪,並剪掉其他所有部分。因此,當發生調整大小時,您需要使完整表格(Invalidate())無效。

如果圓圈在調整大小時開始閃爍,請啓用窗體的雙緩衝。

0

嘗試將窗體的DoubleBuffered屬性設置爲true。