2011-09-02 34 views
0

我有一个DataVisualization.Charting.Chart和为了使用户控制的缩放我已经设置DataVisualization.Charting中的点范围小于[-1,1]时是否允许缩放?

 chartArea1.CursorX.IsUserEnabled = true; 
     chartArea1.CursorX.IsUserSelectionEnabled = true; 
     chartArea1.CursorY.IsUserEnabled = true; 
     chartArea1.CursorY.IsUserSelectionEnabled = true; 

但是,如果我做出一系列具有一个轴,沿着该数据的范围内为[ - 1,1]图表不允许在该轴上缩放。有没有办法启用缩放?

此外,缩放选择器看起来相当笨重(它会捕捉到主要间隔或某事)是否可以得到更平滑的选择?

+0

它使用WPF或WinForms? – Dennis

+0

对不起,花了很长时间回复,我正在这样做WinForms –

回答

0

原来,这个问题必须由变焦造成的光标只能够采取位置坐标上的离散的网格。这些由Cursor.Interval和Cursor.Offset控制。您可以通过设置

Chart.ChartAreas[0].CursorX.Interval = 0; 
Chart.ChartAreas[0].CursorY.Interval = 0; 

这使得电网连续这么变焦光标可以采取任何坐标改变这种情况。

0

涵盖WPF的WinForms因为你没有在你的问题中指定。

WPF

听起来好像该图表被虚拟化的内容(即,仅绘制什么是在视图)。您可能通过将ScrollViewer.CanContentScroll设置为False来验证是否属于这种情况。您将需要保持虚拟化,否则性能会受到大型数据集的影响。

的WinForms

你有没有设置Chart.DoubleBuffered财产?将此属性设置为true将使图表控件使用辅助缓冲区重绘其表面以减少或防止闪烁。

  • Chart类(MSDN
  • Control.DoubleBuffered属性(MSDN
+0

谢谢,我没有设置它,我会在星期二尝试它。为什么辅助缓冲区允许缩放?我不好意思。 –

+0

我相信你看到的问题只是渲染重绘(即闪烁),这将通过双缓冲油漆来解决。 ...这只是一个很好的猜测,不需要自己创建一个示例应用程序并进行调试。 – Dennis

+0

事实证明Control.DoubleBuffered是受保护的,所以你不能从外部修改它。此外,我没有看到如何缺乏双缓冲值会阻止您甚至绘制缩放矩形。 –