记ProEssentials图表控件在aardio中的使用

By admin at 2020-08-25 • 0人收藏 • 360人看过

这个图表控件在科学计算、工业控制、金融统计等行业中有着大量的实际应用, 非常Nice

就是我经常使用的实时曲线就有多种模式选择 

支持3d图, 柱状图,饼图, 线图, 极点图,金融图,组合图, 可以任意组合实现不同效果

官方提供的示例非常详细,基本包含了所有的功能演示

此控件可以免注册调用,用com.lite()即可,省去注册时候权限问题的麻烦。

GIF.gif

所以学习一下这个控件还是有很大好处的.


以下是我移植的一个简单的例子

(不要在意代码里好长的那些个常量, 我是懒的找了,一股脑全放进去了)

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=622;bottom=337)
winform.add(
static={cls="static";text="Static";left=38;top=27;right=570;bottom=284;db=1;dl=1;dr=1;dt=1;notify=1;transparent=1;z=1}
)
/*}}*/



var pe = winform.static.createEmbed("PEGOE.PegoeCtrl.1")
var Pego1 = pe._object
 
 Pego1.setMouseDraggingX(true)
   Pego1.setMouseDraggingY(true)

   // Enable Bar Glass Effect //
   Pego1.setBarGlassEffect(true)

   // Enable Plotting style gradient and bevel features //
   Pego1.setAreaGradientStyle (PEPGS_RADIAL_BOTTOM_RIGHT)
   Pego1.setAreaBevelStyle ( PEBS_MEDIUM_SMOOTH)
   Pego1.setSplineGradientStyle( PEPGS_RADIAL_BOTTOM_RIGHT)
   Pego1.setSplineBevelStyle (PESBS_MEDIUM_SMOOTH)
      
   // Prepare images in memory //
   Pego1.setPrepareImages(true)

   // Pass Data //
   Pego1.setSubsets( 4)
   Pego1.setPoints (12)

   for(s=0;3;1){
   	for(p=0;11;1){
   		Pego1.setYData(s, p, ((p + 1) * 50) + (math.random() * 250) + 2 + 700 - ((s * 140)))
   	}
   }


   // Set DataShadows to show 3D //
   Pego1.setDataShadows(PEDS_SHADOWS)

   Pego1.setMainTitle("Units Sold per Month")
   Pego1.setSubTitle("")
   Pego1.setYAxisLabel("Units Sold")
   Pego1.setXAxisLabel("Month")
   Pego1.setFocalRect(false)
   Pego1.setPlottingMethod(GPM_AREA)
   Pego1.setGridLineControl(PEGLC_BOTH)
   Pego1.setGridStyle(PEGS_DOT)
   Pego1.setAllowRibbon(True)
   Pego1.setAllowZooming(PEAZ_HORZANDVERT)
   Pego1.setZoomStyle(PEZS_RO2_NOT)

   // subset labels //
   Pego1.setSubsetLabels(0,"Texas")
   Pego1.setSubsetLabels(1,"Florida")
   Pego1.setSubsetLabels(2,"Washington")
   Pego1.setSubsetLabels(3,"California")

   // point labels //
   Pego1.setPointLabels(0,"January")
   Pego1.setPointLabels(1,"February")
   Pego1.setPointLabels(2,"March")
   Pego1.setPointLabels(3,"April")
   Pego1.setPointLabels(4,"May")
   Pego1.setPointLabels(5,"June")
   Pego1.setPointLabels(6,"July")
   Pego1.setPointLabels(7,"August")
   Pego1.setPointLabels(8,"September")
   Pego1.setPointLabels(9,"October")
   Pego1.setPointLabels(10,"November")
   Pego1.setPointLabels(11,"December")

   // subset colors //
   Pego1.setSubsetColors(0, Pego1.PEargb(128, 198, 0, 0))
   Pego1.setSubsetColors(1,Pego1.PEargb(128, 0, 198, 198))
   Pego1.setSubsetColors(2,Pego1.PEargb(128, 198, 198, 0))
   Pego1.setSubsetColors(3,Pego1.PEargb(128, 0, 198, 0)) 
   
   // subset line types //
   Pego1.setSubsetLineTypes(0,PELT_MEDIUMSOLID)
   Pego1.setSubsetLineTypes(1,PELT_MEDIUMSOLID)
   Pego1.setSubsetLineTypes(2,PELT_MEDIUMSOLID)
   Pego1.setSubsetLineTypes(3,PELT_MEDIUMSOLID)
   Pego1.setSubsetLineTypes(4,PELT_MEDIUMSOLID)
   Pego1.setSubsetLineTypes(5,PELT_MEDIUMSOLID)
   Pego1.setSubsetLineTypes(6,PELT_MEDIUMSOLID)
   Pego1.setSubsetLineTypes(7,PELT_MEDIUMSOLID)

   // subset point types //
   Pego1.setSubsetPointTypes(0,PEPT_DOTSOLID)
   Pego1.setSubsetPointTypes(1,PEPT_UPTRIANGLESOLID)
   Pego1.setSubsetPointTypes(2,PEPT_SQUARESOLID)
   Pego1.setSubsetPointTypes(3,PEPT_DOWNTRIANGLESOLID)
   Pego1.setSubsetPointTypes(4,PEPT_DOT)
   Pego1.setSubsetPointTypes(5,PEPT_UPTRIANGLE)
   Pego1.setSubsetPointTypes(6,PEPT_SQUARE)
   Pego1.setSubsetPointTypes(7,PEPT_DOWNTRIANGLE)
   
   // Allow stacked type graphs //
   Pego1.setNoStackedData(false)

   // Various other features //
   Pego1.setFixedFonts(true)
   Pego1.setBitmapGradientMode(true)
   Pego1.setQuickStyle(PEQS_MEDIUM_LINE)
   Pego1.setSimplePointLegend(true)
   Pego1.setSimpleLineLegend(true)
   Pego1.setLegendStyle(PELS_1_LINE)
   
   Pego1.setGradientBars(8)
   Pego1.setTextShadows(PETS_BOLD_TEXT)
   Pego1.setMainTitleBold(true)
   Pego1.setSubTitleBold(true)
   Pego1.setLabelBold(true)
   Pego1.setLineShadows(true)
   Pego1.setFontSize(PEFS_LARGE)
   
   Pego1.setDataPrecision(PEDP_ONEDECIMAL)
   Pego1.setGraphPlusTable(PEGPT_BOTH)
   Pego1.setMarkDataPoints(true)
   
   // Improves exports //
   Pego1.setDpiX(600)
   Pego1.setDpiY(600)
   
   Pego1.setRenderEngine(PERE_GDIPLUS)
   Pego1.setAntiAliasGraphics(true)
   Pego1.setAntiAliasText(true)
   
   // Always call PEactions at end **'
   Pego1.setPEactions(REINITIALIZE_RESETIMAGE)
   
winform.show();
win.loopMessage();

这个控件在aardio中调用和别的语言的区别就是所有的属性都用.set括起来了. 这点注意就好了.

在aardio v28.16版本之后, 改进了com调用方式, 现在可以愉快的直接书写属性而不使用.set括起来了.

如用

   Pego1.Subsets = 4
   Pego1.Points =12

代替上面的

   Pego1.setSubsets( 4)
   Pego1.setPoints (12)


运行效果如下:

image.png


ProEssentials的aardio调用示例.zip

ocx.zip


10 个回复 | 最后更新于 21 天前
2020-08-28   #1

记录一个大量数据时候的处理:

ProEssentials官方提供了一种处理大量数据的方法, 可以不用每次去设置YData值, 一次性给图表数据

这个方式需要调用它们提供的PEGRP32E.DLL中的函数PEvset

aardio中调用示例如下:

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469)
winform.add()
/*}}*/

import console
console.open()

var pe = winform.createEmbed("PEGOE.PegoeCtrl.1")
var Pego1 = pe._object
//设置4条曲线, 每条曲线12个点
Pego1.setSubsets(4)
Pego1.setPoints(12)

//调用dll
var dll=raw.loadDll("PEGRP32E.DLL");
PEvset = dll.api("PEvsetA","long(ADDR hobj,INT npro,pointer data,INT nItems)" )

//定义一个浮点型数组
var buf = { float data[48]={} };
//给数组填充数据
for(s=0;3;1){
	for(p=1;12;1){
		o = (s * 12) + p 
		buf.data[o] = 5 + (math.random() * 10)
	}
}
//包装为指针
var buff =raw.buffer(buf);
//显示数据
console.dumpJson(buf);
//发送数组数据到图表
PEvset(Pego1.hObject, 2140, buff, 48)

winform.show();
win.loopMessage();

image.png

2020-08-28   #2

再来个实时动态显示的例子:

GIF.gif

var F8 = function(){
	// No Shadows //
	
 	Pego1.setDataShadows ( PEDS_NONE)
	// No Flicker //
 	Pego1.setPrepareImages ( true)
 	Pego1.setCacheBmp ( true)
	// Set Subsets and Points //
 	Pego1.setSubsets ( 2      )// set number of subsets
	// Set number data points
 	Pego1.setPoints ( 200     )// number of data points
 	Pego1.setPointsToGraph ( 20)
 	Pego1.setPointsToGraphInit ( PEPTGI_LASTPOINTS)
 	Pego1.setPlottingMethod ( GPM_AREA)
	// Main Title
 	Pego1.setMainTitle ( "Graph Real Time Example")
 	Pego1.setSubTitle ( ""   )// no subtitle
	// Manually configure scales //
 	Pego1.setManualScaleControlY ( PEMSC_MINMAX)
 	Pego1.setManualMinY ( 1)
 	Pego1.setManualMaxY ( 100)
 	Pego1.setManualMinY ( 1)
 	Pego1.setManualMaxDataString ( "000.000")
 	Pego1.setManualMaxPointLabel ( "00:00:00xx")
 	Pego1.setNoStackedData ( true)
 	Pego1.setNoRandomPointsToGraph ( true)
 	Pego1.setAllowHistogram ( false)
 	Pego1.setFocalRect ( false)
 	Pego1.setGridLineControl ( PEGLC_BOTH)
 	Pego1.setDataPrecision ( 1)
	// Needed to allocate point labels so append logic works //
	// Set last point label, Points - 1 //
 	Pego1.setPointLabels(199, "")
 	Pego1.setYData(0, 0, 0)
 	Pego1.setYData(0, 1, 0)
 	Pego1.setYData(0, 2, 0)
 	Pego1.setYData(0, 3, 0)
 	Pego1.setBitmapGradientMode ( false)
 	Pego1.setQuickStyle ( PEQS_DARK_NO_BORDER)
 	Pego1.setFixedFonts ( true)
 	Pego1.setTextShadows ( PETS_BOLD_TEXT)
 	Pego1.setMainTitleBold ( true)
 	Pego1.setSubTitleBold ( true)
 	Pego1.setLabelBold ( true)
 	Pego1.setFontSize ( PEFS_MEDIUM)
	// Improves metafile export //
 	Pego1.setDpiX ( 600)
 	Pego1.setDpiY ( 600)
 	Pego1.setSubsetColors(0,  Pego1.PEargb(128, 0, 198, 0))
 	Pego1.setSubsetColors(1,  Pego1.PEargb(128, 255, 255, 255))
 	Pego1.setRenderEngine ( PERE_HYBRID)
 	Pego1.setAntiAliasText ( true)

	winform.setInterval(
		100,function(){
			ttext = time.now();
   			ttext.format="%H:%M:%S";
   			var tt = tostring(ttext)
   			PEvset(Pego1.hObject, PEP_szaAPPENDPOINTLABELDATA, tt, 1);
			var fNew = {float data[2]={}};
   			// make some random data //
   			fNew.data[1] = math.random()*40 +2;
   			fNew.data[2] = math.random()*40 +6;
			
			var fNewP = raw.buffer(fNew);
   			PEvset(Pego1.hObject, PEP_faAPPENDYDATA, fNewP, 1);
		}
	);

}


2020-08-29   #3

科学图表 scientific , 指示控件名变了,其他同理

image.png

/*基础创建函数{{*/
 var CreateSimpleGraph = function(){
	// Enable middle mouse dragging //
 	Pesgo1.setMouseDraggingX ( true)
 	Pesgo1.setMouseDraggingY ( true)
	// Enable Bar Glass Effect //
 	Pesgo1.setBarGlassEffect ( true)
	// Enable Plotting style gradient and bevel features //
 	Pesgo1.setAreaGradientStyle ( PEPGS_RADIAL_BOTTOM_RIGHT)
 	Pesgo1.setAreaBevelStyle ( PEBS_MEDIUM_SMOOTH)
 	Pesgo1.setSplineGradientStyle ( PEPGS_RADIAL_BOTTOM_RIGHT)
 	Pesgo1.setSplineBevelStyle ( PESBS_MEDIUM_SMOOTH)
	// Set number of Subsets and Points //
 	Pesgo1.setSubsets ( 4)
 	Pesgo1.setPoints ( 12)
	for(s=0;3;1){
		for(p=0;11;1){
 			Pesgo1.setXData(s, p, (p + 1) * 100)
 			Pesgo1.setYData(s, p, (p + 1) * 1 + (math.random() * 250) + 700 - ((s * 140)))
		}
	}
	// Set DataShadows to show shadows
 	Pesgo1.setDataShadows ( PEDS_SHADOWS)
 	Pesgo1.setMainTitle ( "Some Example Data")
 	Pesgo1.setSubTitle ( "" )// no subtitle
 	Pesgo1.setYAxisLabel ( "Units Sold")
 	Pesgo1.setXAxisLabel ( "Month")
 	Pesgo1.setFocalRect ( false)
 	Pesgo1.setPrepareImages ( true)
 	Pesgo1.setCacheBmp ( true)
 	Pesgo1.setPlottingMethod ( SGPM_SPLINE)
 	Pesgo1.setGridLineControl ( PEGLC_BOTH)
 	Pesgo1.setGridStyle ( PEGS_DOT)
 	Pesgo1.setAllowZooming ( PEAZ_HORZANDVERT)
 	Pesgo1.setZoomStyle ( PEZS_RO2_NOT)
	// subset labels
 	Pesgo1.setSubsetLabels(0, "Texas")
 	Pesgo1.setSubsetLabels(1, "Florida")
 	Pesgo1.setSubsetLabels(2, "Washington")
 	Pesgo1.setSubsetLabels(3, "California")
	// subset colors
 	Pesgo1.setSubsetColors(0,  Pesgo1.PEargb(128, 198, 0, 0))
 	Pesgo1.setSubsetColors(1,  Pesgo1.PEargb(128, 0, 198, 198))
 	Pesgo1.setSubsetColors(2,  Pesgo1.PEargb(128, 198, 198, 0))
 	Pesgo1.setSubsetColors(3,  Pesgo1.PEargb(128, 0, 198, 0))
	// subset line types
 	Pesgo1.setSubsetLineTypes(0, PELT_MEDIUM_SOLID)
 	Pesgo1.setSubsetLineTypes(1, PELT_MEDIUM_SOLID)
 	Pesgo1.setSubsetLineTypes(2, PELT_MEDIUM_SOLID)
 	Pesgo1.setSubsetLineTypes(3, PELT_MEDIUM_SOLID)
	// subset point types
 	Pesgo1.setSubsetPointTypes(0, PEPT_DOTSOLID)
 	Pesgo1.setSubsetPointTypes(1, PEPT_UPTRIANGLESOLID)
 	Pesgo1.setSubsetPointTypes(2, PEPT_SQUARESOLID)
 	Pesgo1.setSubsetPointTypes(3, PEPT_DOWNTRIANGLESOLID)
	// Version 4.0 Features //
 	Pesgo1.setFixedFonts ( true)
 	Pesgo1.setSimplePointLegend ( true)
 	Pesgo1.setSimpleLineLegend ( true)
 	Pesgo1.setLegendStyle ( PELS_1_LINE)
 	Pesgo1.setMultiAxisStyle ( PEMAS_SEPARATE_AXES)
	// Set Various Other Properties //
 	Pesgo1.setBitmapGradientMode ( true)
 	Pesgo1.setQuickStyle ( PEQS_MEDIUM_NO_BORDER)
 	Pesgo1.setGradientBars ( 8)
 	Pesgo1.setTextShadows ( PETS_BOLD_TEXT)
 	Pesgo1.setMainTitleBold ( true)
 	Pesgo1.setSubTitleBold ( true)
 	Pesgo1.setLabelBold ( true)
 	Pesgo1.setLineShadows ( true)
 	Pesgo1.setFontSize ( PEFS_LARGE)
 	Pesgo1.setScrollingHorzZoom ( true)
 	Pesgo1.setDataPrecision ( PEDP_ONEDECIMAL)
	// Improves metafile exports //
 	Pesgo1.setDpiX ( 600)
 	Pesgo1.setDpiY ( 600)
 	Pesgo1.setRenderEngine ( PERE_GDIPLUS)
 	Pesgo1.setAntiAliasGraphics ( true)
 	Pesgo1.setAntiAliasText ( true)
	// Set PEactions ( 0 when through setting properties for this control )//
 	Pesgo1.setPEactions ( REINITIALIZE_RESETIMAGE)
 }
 /*}}*/


2020-08-29   #4

image.png

var F1 = function(){
	CreateSimpleGraph();
	// Create MultiAxes //
 	Pesgo1.setMultiAxesSubsets(0, 2)
 	Pesgo1.setMultiAxesSubsets(1, 2)
 	Pesgo1.setMultiAxesSizing ( true)
 	Pesgo1.setWorkingAxis ( 0 )// Set first y axis parameters
 	Pesgo1.setPlottingMethod ( SGPM_BAR)
 	Pesgo1.setComparisonSubsets ( 1)
 	Pesgo1.setPlottingMethodII ( SGPMII_POINTSPLUSSPLINE)
	// Plot last subset on right //
 	Pesgo1.setWorkingAxis ( 1 )// Set second y axis parameters
 	Pesgo1.setRYAxisComparisonSubsets ( 1)
 	Pesgo1.setPlottingMethod ( SGPM_AREA)
 	Pesgo1.setRYAxisColor (  Pesgo1.PEargb(255, 128, 128, 128))
 	Pesgo1.setWorkingAxis ( 0)
 	Pesgo1.setAnnotationsInFront ( false)
 	Pesgo1.setLineAnnotationTextSize ( 110)
 	Pesgo1.setShowAnnotations ( true)
	/////////////////////////////////
	// Horizontal Line Annotations //
	/////////////////////////////////
 	Pesgo1.setHorzLineAnnotation(0, 820)
 	Pesgo1.setHorzLineAnnotationType(0, PELT_MEDIUMDASH)
 	Pesgo1.setHorzLineAnnotationColor(0,  Pesgo1.PEargb(255, 198, 0, 0))
 	Pesgo1.setHorzLineAnnotationText(0, "")
 	Pesgo1.setHorzLineAnnotationInFront(0, PEAIF_IN_FRONT)
 	Pesgo1.setHorzLineAnnotationAxis(0, 0)
 	Pesgo1.setHorzLineAnnotation(1, 780)
 	Pesgo1.setHorzLineAnnotationType(1, PELT_DASH)
 	Pesgo1.setHorzLineAnnotationColor(1,  Pesgo1.PEargb(255, 0, 198, 0))
 	Pesgo1.setHorzLineAnnotationText(1, "")
 	Pesgo1.setHorzLineAnnotationAxis(1, 0)
 	Pesgo1.setHorzLineAnnotation(2, 740)
 	Pesgo1.setHorzLineAnnotationType(2, PELT_DOT)
 	Pesgo1.setHorzLineAnnotationColor(2,  Pesgo1.PEargb(255, 0, 0, 198))
 	Pesgo1.setHorzLineAnnotationText(2, "")
 	Pesgo1.setHorzLineAnnotationAxis(2, 0)
 	Pesgo1.setHorzLineAnnotation(3, 700)
 	Pesgo1.setHorzLineAnnotationType(3, PELT_MEDIUMSOLID)
 	Pesgo1.setHorzLineAnnotationColor(3,  Pesgo1.PEargb(255, 198, 0, 198))
 	Pesgo1.setHorzLineAnnotationText(3, "")
 	Pesgo1.setHorzLineAnnotationAxis(3, 0)
 	Pesgo1.setHorzLineAnnotation(4, 760)
 	Pesgo1.setHorzLineAnnotationType(4, PELT_THICKSOLID)
 	Pesgo1.setHorzLineAnnotationColor(4,  Pesgo1.PEargb(255, 0, 198, 198))
 	Pesgo1.setHorzLineAnnotationText(4, "")
 	Pesgo1.setHorzLineAnnotationAxis(4, 0)
	// Set right margin to the longest string on right //
 	Pesgo1.setRightMargin ( "String ")
 	Pesgo1.setHorzLineAnnotation(5, 720)
 	Pesgo1.setHorzLineAnnotationType(5, PELT_THINSOLID)
 	Pesgo1.setHorzLineAnnotationColor(5,  Pesgo1.PEargb(255, 198, 0, 0))
 	Pesgo1.setHorzLineAnnotationText(5, "|RTest" + '\n' + "String")
 	Pesgo1.setHorzLineAnnotationAxis(5, 0)
	//  Line annotations on bottom axis //
 	Pesgo1.setHorzLineAnnotation(6, 535)
 	Pesgo1.setHorzLineAnnotationType(6, PELT_MEDIUMSOLID)
 	Pesgo1.setHorzLineAnnotationColor(6,  Pesgo1.PEargb(255, 198, 0, 198))
 	Pesgo1.setHorzLineAnnotationText(6, "Bottom multi-axis with respect to left y axis")
 	Pesgo1.setHorzLineAnnotationAxis(6, 1)
	// Line annotation with respect to right y axis //
 	Pesgo1.setHorzLineAnnotation(7, 475)
 	Pesgo1.setHorzLineAnnotationType(7, PELT_THICKSOLID + 1000)
 	Pesgo1.setHorzLineAnnotationColor(7,  Pesgo1.PEargb(255, 0, 198, 198))
 	Pesgo1.setHorzLineAnnotationText(7, "|rBottom multi-axis with respect to right y axis")
 	Pesgo1.setHorzLineAnnotationAxis(7, 1)
	///////////////////////////////
	// Vertical Line Annotations //
	///////////////////////////////
 	Pesgo1.setVertLineAnnotation(0, 820)
 	Pesgo1.setVertLineAnnotationType(0, PELT_MEDIUMDASH)
 	Pesgo1.setVertLineAnnotationColor(0,  Pesgo1.PEargb(255, 198, 0, 0))
 	Pesgo1.setVertLineAnnotationText(0, "")
 	Pesgo1.setVertLineAnnotationInFront(0, PEAIF_IN_FRONT)
 	Pesgo1.setVertLineAnnotation(1, 780)
 	Pesgo1.setVertLineAnnotationType(1, PELT_DASH)
 	Pesgo1.setVertLineAnnotationColor(1,  Pesgo1.PEargb(255, 0, 198, 0))
 	Pesgo1.setVertLineAnnotationText(1, "")
 	Pesgo1.setVertLineAnnotation(2, 740)
 	Pesgo1.setVertLineAnnotationType(2, PELT_DOT)
 	Pesgo1.setVertLineAnnotationColor(2,  Pesgo1.PEargb(255, 0, 0, 198))
 	Pesgo1.setVertLineAnnotationText(2, "")
 	Pesgo1.setVertLineAnnotation(3, 700)
 	Pesgo1.setVertLineAnnotationType(3, PELT_MEDIUMSOLID)
 	Pesgo1.setVertLineAnnotationColor(3,  Pesgo1.PEargb(255, 198, 0, 198))
 	Pesgo1.setVertLineAnnotationText(3, "")
 	Pesgo1.setVertLineAnnotation(4, 760)
 	Pesgo1.setVertLineAnnotationType(4, PELT_THICKSOLID)
 	Pesgo1.setVertLineAnnotationColor(4,  Pesgo1.PEargb(255, 0, 198, 198))
 	Pesgo1.setVertLineAnnotationText(4, "")
	// Set top margin to the longest string on top //
 	Pesgo1.setTopMargin ( "XX ")
 	Pesgo1.setVertLineAnnotation(5, 720)
 	Pesgo1.setVertLineAnnotationType(5, PELT_THINSOLID)
 	Pesgo1.setVertLineAnnotationColor(5,  Pesgo1.PEargb(255, 198, 0, 0))
 	Pesgo1.setVertLineAnnotationText(5, "|HTest" + '\n' + "String")
	//  Line annotation with top justified text //
 	Pesgo1.setVertLineAnnotation(6, 535)
 	Pesgo1.setVertLineAnnotationType(6, PELT_MEDIUMSOLID)
 	Pesgo1.setVertLineAnnotationColor(6,  Pesgo1.PEargb(255, 198, 0, 198))
 	Pesgo1.setVertLineAnnotationText(6, "|t Top Inside ")
	// Line annotation with bottom justified text //
 	Pesgo1.setVertLineAnnotation(7, 575)
 	Pesgo1.setVertLineAnnotationType(7, PELT_THICKSOLID)
 	Pesgo1.setVertLineAnnotationColor(7,  Pesgo1.PEargb(255, 0, 198, 198))
 	Pesgo1.setVertLineAnnotationText(7, "|b Bottom Inside ")
	// New region annotations, define a top, and bottom graph annotation type and then rect fill //
 	Pesgo1.setGraphAnnotationX(0, 0 /*' ignored for this type'*/)
 	Pesgo1.setGraphAnnotationY(0, 1E+20    /*' some value in outer space'*/)
 	Pesgo1.setGraphAnnotationType(0, PEGAT_TOP)
 	Pesgo1.setGraphAnnotationX(1, 0 /*' ignored for this type'*/)
 	Pesgo1.setGraphAnnotationY(1, 850)
 	Pesgo1.setGraphAnnotationType(1, PEGAT_BOTTOM)
 	Pesgo1.setGraphAnnotationX(2, 850 /*' if text define, located here'*/)
 	Pesgo1.setGraphAnnotationY(2, 850)
 	Pesgo1.setGraphAnnotationType(2, PEGAT_RECT_FILL)
 	Pesgo1.setGraphAnnotationColor(2,  Pesgo1.PEargb(155, 234, 123, 53))
 	Pesgo1.setGraphAnnotationText(2, "")
 	Pesgo1.setShowGraphAnnotations ( true)
	// Set Various Other Properties ///
 	Pesgo1.setSubsetColors(0,  Pesgo1.PEargb(195, 0, 128, 128))
 	Pesgo1.setSubsetColors(2,  Pesgo1.PEargb(195, 128, 128, 0))
 	Pesgo1.setSubsetColors(3,  Pesgo1.PEargb(195, 128, 128, 128))
 	Pesgo1.setGridLineControl ( PEGLC_NONE)
 	Pesgo1.setBitmapGradientMode ( true)
 	Pesgo1.setQuickStyle ( PEQS_DARK_LINE)
 	Pesgo1.setLegendStyle ( PELS_1_LINE_LEFT_OF_AXIS)

}


2020-08-29   #5

image.png

var F2 = function(){
    CreateSimpleGraph();
	// Create 4 separate axes and then overlap all //
 	Pesgo1.setMultiAxesSubsets(0, 1 )// 1 subset on first axis
 	Pesgo1.setMultiAxesSubsets(1, 1 )// 1 subset on second axis
 	Pesgo1.setMultiAxesSubsets(2, 1 )// 1 subset on third axis
 	Pesgo1.setMultiAxesSubsets(3, 1 )// 1 subset on fourth axis
 	Pesgo1.setOverlapMultiAxes(0, 4 )// overlap all 4 axes in one group
	// Match axis color and label to subset label //
 	Pesgo1.setWorkingAxis ( 0)
 	Pesgo1.setYAxisColor (  Pesgo1.PEargb(128, 218, 0, 0))
 	Pesgo1.setYAxisLabel ( "Texas")
 	Pesgo1.setPlottingMethod ( SGPM_BAR)
 	Pesgo1.setWorkingAxis ( 1)
 	Pesgo1.setYAxisColor (  Pesgo1.PEargb(128, 0, 218, 0))
 	Pesgo1.setYAxisLabel ( "Florida")
 	Pesgo1.setPlottingMethod ( SGPM_SPLINE_AREA)
 	Pesgo1.setWorkingAxis ( 2)
 	Pesgo1.setYAxisColor (  Pesgo1.PEargb(128, 0, 0, 218))
 	Pesgo1.setYAxisLabel ( "Washington")
 	Pesgo1.setPlottingMethod ( SGPM_POINTSPLUSLINE)
 	Pesgo1.setWorkingAxis ( 3)
 	Pesgo1.setYAxisColor (  Pesgo1.PEargb(128, 218, 218, 0))
 	Pesgo1.setYAxisLabel ( "California")
 	Pesgo1.setPlottingMethod ( SGPM_POINT)
 	Pesgo1.setWorkingAxis ( 0)
	// Set Various Other Properties //
 	Pesgo1.setBitmapGradientMode ( true)
 	Pesgo1.setQuickStyle ( PEQS_DARK_NO_BORDER)
 	Pesgo1.setMarkDataPoints ( true)
 	Pesgo1.setFontSize ( PEFS_LARGE)
 	Pesgo1.setDataShadows ( PEDS_3D)
	// subset colors //
 	Pesgo1.setSubsetColors(0,  Pesgo1.PEargb(128, 198, 0, 0))
 	Pesgo1.setSubsetColors(1,  Pesgo1.PEargb(64, 0, 198, 0))
 	Pesgo1.setSubsetColors(2,  Pesgo1.PEargb(128, 0, 0, 198))
 	Pesgo1.setSubsetColors(3,  Pesgo1.PEargb(128, 198, 198, 0))
	// subset line types
 	Pesgo1.setSubsetLineTypes(0, PELT_MEDIUM_SOLID)
 	Pesgo1.setSubsetLineTypes(1, PELT_MEDIUM_SOLID)
 	Pesgo1.setSubsetLineTypes(2, PELT_MEDIUM_SOLID)
 	Pesgo1.setSubsetLineTypes(3, PELT_MEDIUM_SOLID)
 	Pesgo1.setScrollingHorzZoom ( true)
 	Pesgo1.setScrollingVertZoom ( true)
 	Pesgo1.setTickColor ( 1)
 	Pesgo1.setMainTitle ( "ZOOM and SCROLL the chart!")
 	Pesgo1.setFontSizeGlobalCntl ( 1.3)
	
}


2020-08-29   #6

image.png

var F3 = function(){
    CreateSimpleGraph();
    // Create 4 separate axes and then overlap in two groups //
 	Pesgo1.setMultiAxesSubsets(0, 1 )// 1 subset on first axis
 	Pesgo1.setMultiAxesSubsets(1, 1 )// 1 subset on second axis
 	Pesgo1.setMultiAxesSubsets(2, 1 )// 1 subset on third axis
 	Pesgo1.setMultiAxesSubsets(3, 1 )// 1 subset on fourth axis
 	Pesgo1.setOverlapMultiAxes(0, 2 )// overlap first two axes in one group
 	Pesgo1.setOverlapMultiAxes(1, 2 )// overlap second two axes in one group
 	Pesgo1.setMultiAxesSizing ( true)
	// Match axis color and label to subset label //
 	Pesgo1.setWorkingAxis ( 0)
 	Pesgo1.setYAxisColor (  Pesgo1.PEargb(255, 0, 0, 0))
 	Pesgo1.setYAxisLabel ( "Texas")
 	Pesgo1.setPlottingMethod ( SGPM_BAR)
 	Pesgo1.setWorkingAxis ( 1)
 	Pesgo1.setYAxisColor (  Pesgo1.PEargb(255, 255, 255, 255))
 	Pesgo1.setYAxisLabel ( "Florida")
 	Pesgo1.setPlottingMethod ( SGPM_SPLINE_AREA)
 	Pesgo1.setWorkingAxis ( 2)
 	Pesgo1.setYAxisColor (  Pesgo1.PEargb(255, 0, 0, 0))
 	Pesgo1.setYAxisLabel ( "Washington")
 	Pesgo1.setPlottingMethod ( SGPM_BAR)
 	Pesgo1.setWorkingAxis ( 3)
 	Pesgo1.setYAxisColor (  Pesgo1.PEargb(255, 255, 255, 255))
 	Pesgo1.setYAxisLabel ( "California")
 	Pesgo1.setPlottingMethod ( SGPM_SPLINE_AREA)
 	Pesgo1.setWorkingAxis ( 0)
	// Set Various Other Properties ///
 	Pesgo1.setFontSize ( PEFS_LARGE)
 	Pesgo1.setSubsetLineTypes(0, PELT_MEDIUMSOLID)
 	Pesgo1.setSubsetLineTypes(1, PELT_MEDIUMSOLID)
 	Pesgo1.setSubsetLineTypes(2, PELT_MEDIUMSOLID)
 	Pesgo1.setSubsetLineTypes(3, PELT_MEDIUMSOLID)
 	Pesgo1.setMarkDataPoints ( true)
 	Pesgo1.setBitmapGradientMode ( false)
 	Pesgo1.setQuickStyle ( PEQS_MEDIUM_INSET)
 	Pesgo1.setLegendStyle ( PELS_1_LINE_TOP_OF_AXIS)
 	Pesgo1.setGridLineControl ( PEGLC_BOTH)
 	Pesgo1.setBorderTypes ( PETAB_INSET)
	// subset colors //
 	Pesgo1.setSubsetColors(0,  Pesgo1.PEargb(128, 0, 0, 140))
 	Pesgo1.setSubsetColors(1,  Pesgo1.PEargb(128, 255, 255, 255))
 	Pesgo1.setSubsetColors(2,  Pesgo1.PEargb(128, 0, 0, 140))
 	Pesgo1.setSubsetColors(3,  Pesgo1.PEargb(128, 255, 255, 255))

}


2020-08-29   #7

科学图表的实时显示:(方式一)

下面的定时器里我用了REINITIALIZE_RESETIMAGE代替官方demo提供的RESET_IMAGE参数, 这样就没问题了,但是根据实际情况考虑的话, 每次更新数据后只需要刷新图片IMAGE即可, 而不需要REInitialize初始化下整个图表.....

这个问题先放一放, 继续下面的实验

var F4 = function(){
    //! Chart fills 100 points autoscaling x axis is it
	//! is filled.  Once 100 point have been passed, the
	//! chart then acts as a strip chart.
 	Pesgo1.setSubsets ( 1)
 	Pesgo1.setPoints ( 100)
	// Set Manual Y scale //'
 	Pesgo1.setManualScaleControlY ( PEMSC_MINMAX)
 	Pesgo1.setManualMinY ( 1)
 	Pesgo1.setManualMaxY ( 100)
	// Clear out default data //'
 	Pesgo1.setXData(0, 0, 0)
 	Pesgo1.setXData(0, 1, 0)
 	Pesgo1.setXData(0, 2, 0)
 	Pesgo1.setXData(0, 3, 0)

 	Pesgo1.setYData(0, 0, 0)
 	Pesgo1.setYData(0, 1, 0)
 	Pesgo1.setYData(0, 2, 0)
 	Pesgo1.setYData(0, 3, 0)

	// Set Various Other Properties ///
 	Pesgo1.setBitmapGradientMode ( false)
 	Pesgo1.setQuickStyle ( PEQS_LIGHT_SHADOW)
	// Set various properties //
 	Pesgo1.setMainTitle ( "Scientific Real-Time Example")
 	Pesgo1.setSubTitle ( "")
 	Pesgo1.setNoRandomPointsToExport ( true)
 	Pesgo1.setFocalRect ( false)
 	Pesgo1.setAllowBar ( false)
 	Pesgo1.setAllowPopup ( false)
 	Pesgo1.setPrepareImages ( true)
 	Pesgo1.setCacheBmp ( true)
 	Pesgo1.setFixedFonts ( true)
 	Pesgo1.setSubsetColors(0,  Pesgo1.PEargb(128, 0, 0, 198))
 	Pesgo1.setGradientBars ( 8)
 	Pesgo1.setTextShadows ( PETS_BOLD_TEXT)
 	Pesgo1.setMainTitleBold ( true)
 	Pesgo1.setSubTitleBold ( true)
 	Pesgo1.setLabelBold ( true)
 	Pesgo1.setLineShadows ( true)
 	Pesgo1.setFontSize ( PEFS_MEDIUM)
	// Improves metafile exports //
 	Pesgo1.setDpiX ( 600)
 	Pesgo1.setDpiY ( 600)
 	Pesgo1.setPEactions ( REINITIALIZE_RESETIMAGE)
  
}

定时器里:

var m_nSinCounter,m_nRealTimeCounter = 1,1;
winform.button11.oncommand = function(id,event){
    winform.setInterval(
		20,function(){
			var yy = {float d=0}
			yy.d = 50 + (math.sin(m_nSinCounter * 0.075) * 30) + (math.random() * 15)
			var xx = {float d=1}
			xx.d = m_nRealTimeCounter
			newy = raw.buffer(yy);
			newx = raw.buffer(xx);
			// Append new values  //
			t = PEvset(Pesgo1.hObject, PEP_faAPPENDYDATA, newy, 1)
			t = PEvset(Pesgo1.hObject, PEP_faAPPENDXDATA, newx, 1)
			
			m_nRealTimeCounter++;
			m_nSinCounter++;
			if(m_nSinCounter>30000){
				m_nSinCounter = 1;
			}
		//PEnarg1 to set the width argument	
		//Pesgo1.setPEnarg1(0)
		//PEnarg2 to set the height argument
    		//Pesgo1.setPEnarg2( 0)
    		Pesgo1.setPEactions(REINITIALIZE_RESETIMAGE)//RESET_IMAGE
		}
	);
}

GIF.gif

科学图表实时方式一.zip


2020-08-30   #8

科学图表实时连续数据方式二:

var F5 = function(){
    //! Chart fills 100 points autoscaling x axis is it
	//! is filled.  Once 100 point have been passed, the
	//! chart then acts as a strip chart.
 	Pesgo1.setSubsets ( 1)
 	Pesgo1.setPoints ( 100)
	// Set Manual Y scale //'
 	Pesgo1.setManualScaleControlY ( PEMSC_MINMAX)
 	Pesgo1.setManualMinY ( 1)
 	Pesgo1.setManualMaxY ( 100)
 	// Set Manual X scale 多加了这三行//'
 	Pesgo1.setManualScaleControlX ( PEMSC_MINMAX)
 	Pesgo1.setManualMinX ( 1)
 	Pesgo1.setManualMaxX ( 100)
	// Clear out default data //'
 	Pesgo1.setXData(0, 0, 0)
 	Pesgo1.setXData(0, 1, 0)
 	Pesgo1.setXData(0, 2, 0)
 	Pesgo1.setXData(0, 3, 0)

 	Pesgo1.setYData(0, 0, 0)
 	Pesgo1.setYData(0, 1, 0)
 	Pesgo1.setYData(0, 2, 0)
 	Pesgo1.setYData(0, 3, 0)

	// Set Various Other Properties ///
 	Pesgo1.setBitmapGradientMode ( false)
 	Pesgo1.setQuickStyle ( PEQS_LIGHT_SHADOW)
	// Set various properties //
 	Pesgo1.setMainTitle ( "Scientific Real-Time Example")
 	Pesgo1.setSubTitle ( "")
 	Pesgo1.setNoRandomPointsToExport ( true)
 	Pesgo1.setFocalRect ( false)
 	Pesgo1.setAllowBar ( false)
 	Pesgo1.setAllowPopup ( false)
 	Pesgo1.setPrepareImages ( true)
 	Pesgo1.setCacheBmp ( true)
 	Pesgo1.setFixedFonts ( true)
 	Pesgo1.setSubsetColors(0,  Pesgo1.PEargb(128, 0, 0, 198))
 	Pesgo1.setGradientBars ( 8)
 	Pesgo1.setTextShadows ( PETS_BOLD_TEXT)
 	Pesgo1.setMainTitleBold ( true)
 	Pesgo1.setSubTitleBold ( true)
 	Pesgo1.setLabelBold ( true)
 	Pesgo1.setLineShadows ( true)
 	Pesgo1.setFontSize ( PEFS_MEDIUM)
	// Improves metafile exports //
 	Pesgo1.setDpiX ( 600)
 	Pesgo1.setDpiY ( 600)
 	Pesgo1.setPEactions ( REINITIALIZE_RESETIMAGE)
  
}
//定时器
var m_nSinCounter,m_nRealTimeCounter = 1,1;
winform.button7.oncommand = function(id,event){
	winform.setInterval(
		20,function(){
			var yy = {float d=0}
			yy.d = 50 + (math.sin(m_nSinCounter * 0.075) * 30) + (math.random() * 15)
			var xx = {float d=1}
			xx.d = m_nRealTimeCounter
			newy = raw.buffer(yy);
			newx = raw.buffer(xx);
			// Append new values  //
			t = PEvset(Pesgo1.hObject, PEP_faAPPENDYDATA, newy, 1)
			t = PEvset(Pesgo1.hObject, PEP_faAPPENDXDATA, newx, 1)
			
			m_nRealTimeCounter++;
			//如果到了100个数据那么就设置x轴缩放取消
			if(m_nRealTimeCounter==100){
				Pesgo1.setManualScaleControlX( PEMSC_NONE )	
			}
			m_nSinCounter++;
			if(m_nSinCounter>30000){
				m_nSinCounter = 1;
			}
			
			//Pesgo1.setPEnarg1(0)
    		//Pesgo1.setPEnarg2( 0)
    		Pesgo1.setPEactions(REINITIALIZE_RESETIMAGE)//RESET_IMAGE)
		}
	);
}

GIF2.gif

2020-08-30   #9

科学图表实时显示第三种方式:

var F6 = function(){
    //! Chart fills 100 points autoscaling x axis is it
	//! is filled.  Once 100 point have been passed, the
	//! chart then acts as a strip chart.
 	Pesgo1.setSubsets ( 1)
 	Pesgo1.setPoints ( 100)
	// Set Manual Y scale //'
 	Pesgo1.setManualScaleControlY ( PEMSC_MINMAX)
 	Pesgo1.setManualMinY ( 1)
 	Pesgo1.setManualMaxY ( 100)
 	// Set Manual X scale //'
 	Pesgo1.setManualScaleControlX ( PEMSC_MINMAX)
 	Pesgo1.setManualMinX ( 1)
 	Pesgo1.setManualMaxX ( 100)
 	
 	// Show Annotations //
   Pesgo1.setShowAnnotations(true)
   
	// Clear out default data //'
 	Pesgo1.setXData(0, 0, 0)
 	Pesgo1.setXData(0, 1, 0)
 	Pesgo1.setXData(0, 2, 0)
 	Pesgo1.setXData(0, 3, 0)

 	Pesgo1.setYData(0, 0, 0)
 	Pesgo1.setYData(0, 1, 0)
 	Pesgo1.setYData(0, 2, 0)
 	Pesgo1.setYData(0, 3, 0)

	// Set Various Other Properties ///
 	Pesgo1.setBitmapGradientMode ( false)
 	Pesgo1.setQuickStyle ( PEQS_DARK_LINE)
	// Set various properties //
 	Pesgo1.setMainTitle ( "Scientific Real-Time Example")
 	Pesgo1.setSubTitle ( "")
 	Pesgo1.setNoRandomPointsToExport ( true)
 	Pesgo1.setFocalRect ( false)
 	Pesgo1.setAllowBar ( false)
 	Pesgo1.setAllowPopup ( false)
 	Pesgo1.setPrepareImages ( true)
 	Pesgo1.setCacheBmp ( true)
 	Pesgo1.setFixedFonts ( true)
 	Pesgo1.setSubsetColors(0,  Pesgo1.PEargb(255, 0, 198, 198))
 	Pesgo1.setGradientBars ( 8)
 	Pesgo1.setTextShadows ( PETS_BOLD_TEXT)
 	Pesgo1.setMainTitleBold ( true)
 	Pesgo1.setSubTitleBold ( true)
 	Pesgo1.setLabelBold ( true)
 	Pesgo1.setLineShadows ( true)
 	Pesgo1.setFontSize ( PEFS_MEDIUM)
	// Improves metafile exports //
 	Pesgo1.setDpiX ( 600)
 	Pesgo1.setDpiY ( 600)
 	Pesgo1.setPEactions ( REINITIALIZE_RESETIMAGE)
  
}
var m_nSinCounter,m_nRealTimeCounter = 1,1;
winform.button9.oncommand = function(id,event){
	winform.setInterval(
		20,function(){
			newy = 50 + (math.sin(m_nSinCounter * 0.075) * 30) + (math.random() * 15)
			newx = m_nRealTimeCounter
			// Append new values  //
			Pesgo1.setYData(0, m_nRealTimeCounter, newy)
			Pesgo1.setXData(0, m_nRealTimeCounter, newx)
			
			Pesgo1.setVertLineAnnotation(0,newx)
  			Pesgo1.setVertLineAnnotationType(0,PELT_MEDIUMSOLID)
  			Pesgo1.setVertLineAnnotationColor(0,0x00FE00)

			m_nRealTimeCounter++;
			if(m_nRealTimeCounter==100){
				m_nRealTimeCounter = 0;
			}
			m_nSinCounter++;
			if(m_nSinCounter>30000){
				m_nSinCounter = 1;
			}
			
			Pesgo1.setPEnarg1(0)
    		Pesgo1.setPEnarg2( 0)
    		Pesgo1.setPEactions(REINITIALIZE_RESETIMAGE)//RESET_IMAGE)
		}
	);
}

GIF4.gif

21 天前   #10

看起来比ST_Curve好用呀

登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前正在学aardio+halcon机器视觉.
Sciter中文在线文档Sciter在线学习文档
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
aardio在线手册Aardio在线手册
C大Aardio论坛:Aar爱好者论坛
简码教程网:简码编程
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...