2010-03-09 89 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