Как нарисовать круг на форме, которая охватывает всю рабочую область? - PullRequest
2 голосов
/ 15 октября 2010

Как нарисовать круг на форме, которая покрывает всю рабочую область?

Я попробовал следующий код. Но когда я изменяю размер формы, круг искажается. 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 ]

4 голосов
/ 15 октября 2010

Вы должны также подключиться к событию ClientSizeChanged, чтобы вызвать перерисовку.

В настоящее время происходит то, что Windows предполагает, что нужно перерисовать только небольшую часть, которая стала видимой, и отключает все остальное. Поэтому вам необходимо аннулировать полную форму (Invalidate()) при изменении размера.

Если при изменении размера кружок начинает мерцать, включите двойную буферизацию формы.

0 голосов
/ 15 октября 2010

Попробуйте установить для свойства DoubleBuffered формы значение true.

...