2010-03-09 35 views
3

我正在實現想要在面板中畫線的應用程序。但面板必須自動滾動,因爲它的大小可以在運行時擴展。我使用的面板繪製方法如下。當我運行程序時繪製線條,但是當我向下滾動面板時線條會崩潰。我該如何避免這種情況?允許自動滾動的面板上的油漆

private void panel1_Paint(object sender, PaintEventArgs e) 
{ 
    this.DoubleBuffered = true; 
    Pen P = new Pen(Color.Red); 

    for (int i = 0; i < 10; i++) { 
    e.Graphics.DrawLine(P, (new Point(i * 40, 0)), (new Point(i * 40, 60 * 40))); 
    } 
    for (int i = 0; i < 60; i++) 
    { 
    e.Graphics.DrawLine(P, (new Point(0, i *40)), (new Point(10 * 40, i * 40))); 
    } 
} 

回答

8

我假定「崩潰」並不意味着代碼崩潰。您需要按滾動量偏移繪圖。這很容易做到:

private void panel1_Paint(object sender, PaintEventArgs e) { 
    e.Graphics.TranslateTransform(panel1.AutoScrollPosition.X, panel1.AutoScrollPosition.Y); 
    // etc 
    //... 
} 
+0

非常感謝,因爲我被卡在那裏,所以幫了我很多。 – Dinu 2010-03-10 03:37:17