我正在使用ZedGraph在我的应用程序上显示曲线(10k +点)。
我添加了竖条以允许用户查看某个点的值(十字形的种类)。每次用户移动鼠标时,都会重绘整个控件:
bool stackedGraphControl1_MouseMoveEvent(ZedGraphControl sender, MouseEventArgs e)
{
DrawCursors(e.Location);
Refresh();
return false;
}
超过2条曲线,计算机变得迟钝。一种解决方案是仅绘制垂直条(删除Refresh()
调用并仅绘制垂直条)。这样更快但图形结果很有趣:
但不是很有用。我知道所有垂直条都是一次又一次地被绘制而不被移除。
有没有办法重新绘制(即:删除和绘制)条形图(位于我窗格的GraphObjList
中)?
答案 0 :(得分:1)
过去,我通过覆盖ZedGraphControl的OnPaint来创建分层绘图效果,从而完成了这项功能。
将ZedGraph绘制到中间位图或BufferedGraphics。保存此位图以供将来绘制,并在其他内容发生更改时使位图无效(轴值,曲线已添加)
Future OnPaint将此Bitmap调用blit到图形对象并手动绘制任何GraphObjs。
MouseMove事件只是更新指标的属性并强制使用缓存的zedgraph图像重绘。