【发布时间】:2014-07-07 16:04:14
【问题描述】:
我有一个显示各种数据的图表。用户可以单击图表(第一次单击),鼠标移动到任何地方都会绘制一个框。第二次单击时,所选区域将成为图表的新边界(放大)。
我通过在图表的绘制事件中绘制 4 条线来做到这一点,并在每次鼠标移动时调用 chart.invalidate 来强制绘制事件。
它在少于 1000 个数据点的情况下工作得非常好,但是通过它变得相当滞后。我想知道是否有一种方法可以做到这一点,而无需在每次移动鼠标时都重新绘制图表(因为我认为这是问题所在)
我也尝试过使用自定义“浮动线”来绘制表单上的所有控件(包括图表),但我遇到了幽灵线(想想:快速移动 Windows XP 窗口)。我认为这是不断移动线路位置不可避免的错误。
感谢任何想法/想法。
重绘代码:
Private Sub Chart1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Chart1.Paint
Dim arbitraryPen As New Pen(Brushes.Black, 1)
e.Graphics.DrawLine(arbitraryPen, point1.x, point1.y, point2.x, point1.y)
e.Graphics.DrawLine(arbitraryPen, point1.x, point1.y, point1.x, point2.y)
e.Graphics.DrawLine(arbitraryPen, point1.x, point2.y, point2.x, point2.y)
e.Graphics.DrawLine(arbitraryPen, point2.x, point1.y, point2.x, point2.y)
arbitraryPen.Dispose()
End Sub
【问题讨论】:
-
不确定为什么这被标记为
C#。删除标签。