C# 面板上的油漆允许自动滚动

C# 面板上的油漆允许自动滚动,c#,winforms,panel,C#,Winforms,Panel,我正在实现一个希望在面板中绘制线条的应用程序。但是面板必须自动滚动,因为它的大小可以在运行时扩展。我使用的面板绘制方法如下。当我运行程序时,它会绘制线条,但当我向下滚动面板时,线条会崩溃。我如何避免这种情况 private void panel1_Paint(object sender, PaintEventArgs e) { this.DoubleBuffered = true; Pen P = new Pen(Color.Red); for (int i = 0; i <

我正在实现一个希望在面板中绘制线条的应用程序。但是面板必须自动滚动,因为它的大小可以在运行时扩展。我使用的面板绘制方法如下。当我运行程序时,它会绘制线条,但当我向下滚动面板时,线条会崩溃。我如何避免这种情况

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)));
  }
}
private void panel 1_Paint(对象发送器,PaintEventArgs e)
{
this.DoubleBuffered=true;
Pen P=新笔(颜色为红色);
对于(int i=0;i<10;i++){
e、 图形.绘制线(P,(新点(i*40,0)),(新点(i*40,60*40));
}
对于(int i=0;i<60;i++)
{
e、 图形.绘制线(P,(新点(0,i*40)),(新点(10*40,i*40));
}
}
我假设“get Crash”实际上并不意味着您的代码崩溃。您需要按滚动量偏移图形。这很容易做到:

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

非常感谢。我被困在那里,这对我帮助很大。:)