ProEssentials图表开发常见问题总结
ProEssentials是Gigasoft 开发的一个功能十分强大的工业实时绘图控件,几乎每一个使用过ProEssentials的人都认为这是他们所用过的功能最强的图表控件。它可以运用到金融、科学、工程、商业等行业的实时曲线绘制中。下面慧都小编汇总了开发人员在使用 ProEssentials 时所遇到的一些问题,希望能为其他使用者提供一点借鉴:
问题一:如何用ProEssentials v6参考线来标记坐标数据点
解答:请参考VC示例中105号例子,将其中的CreateDataCursor()函数中的
PEnset(m_hPE, PEP_nCURSORMODE, PEM_DATACROSS);
改为:
PEnset(m_hPE, PEP_nCURSORMODE, PECM_FLOATINGXY);
就可以实现您要的效果。
问题二:鼠标移动时如何获取ProEssentials图表当前点Y轴值
解答:实际上通过鼠标我们能获取到的是一个double类型的值,并且我们取到的通常不可能是和数据点完全吻合的值。那么实际上您要取的值我建议您采用取近似值的办法来获取,也就是说取到当前点的X,Y坐标,并与我们设置的标记点或者数据点进行比较,这样来得到我们所设置的数据点。
问题三:ProEssentials图表控件无法响应滑鼠的动作进行放大或者缩小
解答:在这里呢要提示您一下,该控件的缩放功能并不是您所想的是鼠标中键滚动实现缩放,而是中键或者左键按下后拖动实现。以您所选择的区域为中心进行缩放。
也就是说中键滚动不会出现效果,而是按下后拖动。请您注意一下,如果您是按我所说的方式理解的,那么是可以实现的。
问题四:如何在ProEssentials中用映射的方式显示图片
用asp.net c#开发的时候,使用ProEssentials控件的方式是这样的,先在default1.aspx里拖拽一个控件,然后在default2.aspx里拖拽一个,其中defautl.aspx实际上是一个图片,default1连接default2,是程序可以运行,但是当default1上需要拖拽很多个同样的控件的时候,要用多个default2.aspx还对应吗,这样就会产生很多个类似的default2.aspx.
解答:如果您要想用映射的方式来显示图片您其实可以在Default2.aspx中使用多个控件,统一映射到Default1.aspx中就可以了,无论如何进行拖拽都不会出现多个页面.也不需要多个页面来承载控件,这是没有必要的.
问题五:如何将ProEssentials的柱状图变成线状图
解答:您要将柱状图改为线性图只需要将pego1.PePlot.Method = GraphPlottingMethod.Bar改为pego1.PePlot.Method = GraphPlottingMethod.Line就可以实现.
要使用水平平行线方式的网格线的话您需要将pego1.PeGrid.LineControl = GridLineControl.Both;改为Pego1.PeGrid.LineControl = GridLineControl.YAxis;就可以实现您要的效果
请注意:在修改了状态之后请重新绘制控件,请使用pego1.Refresh();
问题六:用ProEssentials创建多个坐标窗口时,如何控制窗口比例大小
解答:ProEssentials控件内部自设置平分图表区域,目前尚无法控制每个区域大小,只能以平分方式来确定。
问题七:ProEssentials整个X轴能否显示成24小时的
解答:请您根据以下代码来设置您的控件:
DateTime dt = new DateTime(2009, 5, 18, 0, 0, 0);//设置开始日期为2009年5月18日0点整
DateTime dte = new DateTime(2009, 5, 18, 23, 59,59);//设置时间为2009年5月18日23点59分59秒
Pesgo1.PeGrid.Configure.ManualMinX = dt.ToOADate();;
Pesgo1.PeGrid.Configure.ManualMaxX = dte.ToOADate();
这样就可以设置为一天24小时。
问题八:怎么把date一列赋给ProEssentials的X轴,后面的任意一列赋值给Y轴
Y轴从0到10,X轴从0到96,其中X轴分24个大刻度,每个又分四个小刻度,现在已经分完了,问题1:显示的时候向外面不显示刻度线,在坐标轴里面显示刻度线;问题2:X轴刻度那不向显示原来的1到24了,想显示比如00:15-00:30,就是时间段,至少大刻度能显示。
解答:首先您要使用pesgoWeb.PeData.DateTimeMode = true;这个设置,X轴设置为时间显示的方式.那么时间里就是标准的时间格式如:00:12等.
double ZoomSmallInterval = (1.0 / 1440.0); //设置时间跨度的大小,1440是一天的分钟数
double StartTime = DateTime.Now.ToOADate();//时间需要转换到double类型
pesgo1.PeGrid.Configure.ManualScaleControlX = ManualScaleControl.MinMax;
pesgo1.PeGrid.Configure.ManualMinX = StartTime;
pesgo1.PeGrid.Configure.ManualMaxX = pesgo1.PeGrid.Configure.ManualMinX + ZoomInterval;
目前时间刻度无法设置刻度的大小,它会自动的进行分段,当然就更无法设置小刻度了。
问题九:如何控制ProEssentials坐标轴的每个刻度之间的距离
就是如果X轴是一厘米一个刻度的话,Y轴想0.5厘米一个刻度
解答:关于刻度的长度尺寸是无法控制的,通常情况下我们是以最大值和最小值来设置的,中间设置步长也就是跨度,但是具体长度就没办法控制了,因为这个与显示大小以及控件内部的大小都是有关系的.
要使用最大值最小值来控制轴上能显示的区域请使用以下代码
Pesgo1.PeGrid.Configure.ManualScaleControlY = ManualScaleControl.MinMax;
Pesgo1.PeGrid.Configure.ManualMinY = 0;
Pesgo1.PeGrid.Configure.ManualMaxY = 1000;
通过这个设置就可以正确的设置它显示的最大值最小值.步长则是自动设定的。
问题十:用Proessentials绘制水平曲线的问题
主要是Y轴从1到10,X轴共96个刻度,只有一条曲线就可以,并且只要水平线,不要垂直线。
解答:如果您要使用简单图,那么无法实现这样的X轴,但是如果您要用科学图就可以实现这样的X轴。具体方法如下:
Pesgo1.PeGrid.Configure.ManualXAxisTicknLine = true;//必须要设置的语句
Pesgo1.PeGrid.Configure.ManualXAxisTick = 50;//设置X轴步长单位垮度
Pesgo1.PeGrid.Configure.ManualXAxisLine = 1;//设置线条的宽度
而Y轴的设置上非常简单。具体方法如下:
Pesgo1.PeGrid.Configure.ManualScaleControlY = ManualScaleControl.MinMax;//设置Y轴最大最小值为自定义
Pesgo1.PeGrid.Configure.ManualMaxY = 10;//设置Y轴上限
Pesgo1.PeGrid.Configure.ManualMinY = 0;//设置Y轴下限
您要设置Y轴的刻度步长与X轴的方法是相同的,只是参数名称有些不同:
Pesgo1.PeGrid.Configure.ManualYAxisTicknLine = true;//必须要设置的语句
Pesgo1.PeGrid.Configure.ManualYAxisTick = 50;//设置X轴步长单位垮度
Pesgo1.PeGrid.Configure.ManualYAxisLine = 1;//设置线条的宽度
例如您想设置96个X刻度,那么您需要做的就是将整个轴的长度值/96 这个double值赋予ManualXAxisTick属性就可以。