Drawing trên winform

Tại sao khi vẽ bằng thư viện Drawing trên winform, khi cho nó vào Form_load() thì nó không vẽ, tôi phải bỏ nó vào sự kiện click rồi click kích hoạt vào button nó mới vẽ ra.

private void Form1_Load(object sender, EventArgs e)
        {
            Graphics g = this.CreateGraphics();
            g.DrawLine(Pens.Red, 500, 50, 100, 200);
       }
private void button1_click(Object sender, EventArgs e)
        {
            Graphics g = this.CreateGraphics();
            g.DrawLine(Pens.Red, 500, 50, 100, 100);
        }

Bạn chưa hiểu về vẽ đồ họa giao diện rồi.
Thực chất, giao diện luôn được vẽ lại. Có thể không có thay đổi gì, nó vẫn vẽ lại khi bất kì sự kiện liên quan nào xảy ra, hoặc lệnh yêu cầu vẽ lại được gọi.

Trường hợp của bạn, bạn chỉ vẽ duy nhất 1 lần đầu tiên khi sự kiện Load xảy ra, ngay sau đó, giao diện bị xóa và được vẽ lại.

Bạn nên vẽ nó trong sự kiện Paint. Trong sự kiện này có truyền sẵn đối tượng PaintEventArgs chứa Graphics, nên bạn chỉ cần dùng mà không cần tạo mới.

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?