面板上的绘图工具,允许自动滚动

5

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

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)));
  }
}
1个回答

14

我会假设“get crashes”并不是指您的代码崩溃了。您需要根据滚动量来调整绘图位置。这很容易实现:

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

1
非常感谢你。我卡在那里了,你的帮助对我很有帮助。:) - Dinu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接