2012-12-18 39 views
6

Tôi có một Panel gọi panel1 và tôi đang cố gắng để vẽ một đường trên panel1 tôi sử dụng mã này:dòng bốc thăm vào bảng điều khiển không hiển thị

Graphics g = panel1.CreateGraphics(); 
     var p = new Pen(Color.Black, 3); 
     var point1 = new Point(234,118); 
     var point2 = new Point(293,228); 
     g.DrawLine(p, point1, point2); 

Nhưng không có gì được hiển thị. Bất kỳ ý tưởng? Đây là một hình thức cửa sổ.

+0

Bạn có điều này trong sự kiện Paint() không? –

+0

Tôi có nó trong constructor – Badmiral

Trả lời

12

Xử lý của Paint event Panel và đặt nó ở đó. Những gì đang xảy ra là nó đang được rút ra một lần trong constructor nhưng sau đó được rút ra trong sự kiện Paint mọi lúc nó được gọi.

private void panel1_Paint(object sender, PaintEventArgs e) 
{ 
    base.OnPaint(e); 
    using(Graphics g = e.Graphics) 
    { 
     var p = new Pen(Color.Black, 3); 
     var point1 = new Point(234,118); 
     var point2 = new Point(293,228); 
     g.DrawLine(p, point1, point2); 
    } 
} 
+0

Cách khác để xem dòng là tạo nút và vẽ đường của bạn trong Phương thức OnClick của nút như sau: private void btnDraw_Click (đối tượng người gửi, EventArgs e) { Đồ họa dc = drawingArea.CreateGraphics(); Bút BlackPen = bút mới (Color.Black, 2); dc.DrawLine (BlackPen, 0, 0, 200, 200); BlackPen.Dispose(); dc.Dispose(); } – Combine

2

Đặt nó trong một số sự kiện sau khi biểu mẫu đã được tạo và hiển thị trên màn hình và nó sẽ hoạt động tốt.

Tốt nhất nên đặt nó vào sự kiện Paint, như keyboardP đã nêu, nhưng nó sẽ không hiển thị nếu được gọi trước khi biểu mẫu được hiển thị trên màn hình.

Để kiểm tra điều này, bạn có thể thêm một nút và thêm mã vào sự kiện nhấp chuột:

private void button1_Click(object sender, EventArgs e) 
{ 
    using (Graphics g = panel1.CreateGraphics()) 
    { 
     g.DrawLine(new Pen(Color.Back, 3), new Point(234,118), new Point(293,228)); 
    } 
} 
+0

Có lẽ nó sẽ là tốt nhất để dẫn theo ví dụ và bọc rằng trong một 'sử dụng' tuyên bố? :) –

+0

Đã cố gắng thay đổi định nghĩa g, không có gì xảy ra – Badmiral

+0

Đã thay đổi câu trả lời của tôi. Không phải là vấn đề tôi nghĩ. –

0

Để xem bản vẽ của bạn - bạn chỉ cần tạo nút bằng Sự kiện nhấp và vẽ khi nút được nhấp. Ví dụ:

private void btnDraw_Click(object sender, EventArgs e) 
{ 
    Graphics dc = drawingArea.CreateGraphics(); 
    Pen BlackPen = new Pen(Color.Black, 2); 
    dc.DrawLine(BlackPen, 0, 0, 200, 200); 

    BlackPen.Dispose(); 
    dc.Dispose(); 
}  

Oh, và bằng cách "drawingArea" là (Name) của một trong hai một PictureBox hoặc Panel bạn đã thêm vào hình thức của bạn (để vẽ trong nó).

Các vấn đề liên quan