Trong việc tự động tô vẽ lại, một điểm mà chúng ta thường không để ý đến là việc tô vẽ chỉ ảnh hưởng lên phần cửa sổ bị che lấp. Điều này đặc biệt quan trọng khi chúng ta chỉnh lại kích thước của form. Thí dụ, ta thử xem 1 đoạn mã xử lý tình huống Paint() của Form chính khi cho vẽ một hình Elip mang cùng kích thước với Form:

Mã:
        private void Form1_Paint(object sender, PaintEventArgs e)        {            Graphics g = e.Graphics;            Pen butve = new Pen(Color.Red, 10);            g.DrawEllipse(butve, new Rectangle(new Point(0, 0), this.ClientSize)) ;        }
Như thế, khi nhấn F5, chúng ta sẽ có kết quả

Bây giờ, bạn thử thay đổi kích thước của Form, lúc đó bạn sẽ nhận được kết quả


Chắc hẳn, đấy không phải là kết quả mà bạn mong muốn, trông nó mất thẩm mỹ làm sao, cái bạn cần là hình Elip nằm trong Form cơ, không phải cái hình thù quái dị như thế.
Vậy làm sao để khắc phục đây? Hay là bó tay nhỉ? Hix, cũng may là có cách giải quyết vấn đề này bằng tay bằng cách invalidating đoạn mã trên bất cứ lúc nào kích thước Form bị thay đổi (bằng cách thụ lý tình huống Resize của Form):

Mã:
        private void Form1_Resize(object sender, EventArgs e)        {            this.Invalidate();  // đoạn code cần thêm        }
OK, bây giờ ổn rồi đấy. Chúc bạn thành công!