记ProEssentials图表控件在aardio中的使用
这个图表控件在科学计算、工业控制、金融统计等行业中有着大量的实际应用, 非常Nice
就是我经常使用的实时曲线就有多种模式选择
支持3d图, 柱状图,饼图, 线图, 极点图,金融图,组合图, 可以任意组合实现不同效果
官方提供的示例非常详细,基本包含了所有的功能演示
此控件可以免注册调用,用com.lite()即可,省去注册时候权限问题的麻烦。
所以学习一下这个控件还是有很大好处的.
以下是我移植的一个简单的例子
(不要在意代码里好长的那些个常量, 我是懒的找了,一股脑全放进去了)
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)
运行效果如下:
再来个实时动态显示的例子:
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); } ); }
科学图表 scientific , 指示控件名变了,其他同理
/*基础创建函数{{*/ 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) } /*}}*/
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) }
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) }
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)) }
科学图表的实时显示:(方式一)
下面的定时器里我用了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 } ); }
科学图表实时连续数据方式二:
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) } ); }
科学图表实时显示第三种方式:
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) } ); }
实用界面设置:
import win.ui; /*DSG{{*/ var winform = win.form(text="aardio form";right=1213;bottom=627) winform.add( button={cls="button";text="del";left=1100;top=593;right=1214;bottom=626;db=1;dr=1;z=2}; button2={cls="button";text="add";left=983;top=593;right=1097;bottom=626;db=1;dr=1;z=3}; button3={cls="button";text="create";left=866;top=593;right=980;bottom=626;db=1;dr=1;z=4}; static={cls="static";left=0;top=0;right=1214;bottom=592;bgcolor=8421376;db=1;dl=1;dr=1;dt=1;z=1} ) /*}}*/ var pe = winform.static.createEmbed("PESGOE.PesgoeCtrl.1") var Pesgo1 = pe._object; //调用dll var dll=raw.loadDll("PEGRP32E.DLL"); PEvset = dll.api("PEvsetA","long(ADDR hobj,INT npro,pointer data,INT nItems)" ) Pesgo1.setSubsets ( 1) Pesgo1.setPoints ( 10000) // Set Manual Y scale //' //Pesgo1.setManualScaleControlY (0);//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.setBorderTypes ( 1); // Set various properties // Pesgo1.setMainTitle ( "Scientific Real-Time Example") Pesgo1.setSubTitle ( "") Pesgo1.setYAxisLabel ( "Y轴") Pesgo1.setXAxisLabel ( "X轴") Pesgo1.setNoRandomPointsToExport ( true) Pesgo1.setFocalRect ( false) Pesgo1.setAllowBar ( false) Pesgo1.setAllowPopup ( true) Pesgo1.setPrepareImages ( true) Pesgo1.setCacheBmp ( true) Pesgo1.setFixedFonts ( true) Pesgo1.setSubsetColors(0, Pesgo1.PEargb(128, 0, 0, 198)) Pesgo1.setGradientBars ( 8) Pesgo1.setDpiX ( 600) Pesgo1.setDpiY ( 600) Pesgo1.setPEactions ( 0) var insertData = function(x,y){ var yy = {float d=0} yy.d = y; var xx = {float d=1} xx.d = x; newy = raw.buffer(yy); newx = raw.buffer(xx); // Append new values // t = PEvset(Pesgo1.hObject, 3276, newy, 1) t = PEvset(Pesgo1.hObject, 3658, newx, 1) Pesgo1.setPEactions(0) } var index = 1; winform.button2.oncommand = function(id,event){ insertData(index,math.random(1,100)); index++; } winform.show(); win.loopMessage();
增加辅助线:
Pesgo1.setAnnotationsInFront(false) Pesgo1.setLineAnnotationTextSize(110) Pesgo1.setShowAnnotations(true) Pesgo1.setHorzLineAnnotation(0,70) Pesgo1.setHorzLineAnnotationType(0,2) Pesgo1.setHorzLineAnnotationColor(0, Pesgo1.PEargb(255, 0, 0, 198)) Pesgo1.setHorzLineAnnotationText(0,"合格线") Pesgo1.setHorzLineAnnotationAxis(0,0)
工程下载: pppp.zip
注意自己手动注册下里面的ocx
经典使用示例:
import win.ui; /*DSG{{*/ var winform = win.form(text="波形图";right=871;bottom=372) winform.add( static={cls="static";left=0;top=0;right=872;bottom=373;bgcolor=8421376;db=1;dl=1;dr=1;dt=1;notify=1;z=1} ) /*}}*/ var pe = winform.static.createEmbed("PESGOE.PesgoeCtrl.1") var Pesgo1 = pe._object; //调用dll var dll=raw.loadDll("PEGRP32E.DLL"); PEvset = dll.api("PEvsetA","long(ADDR hobj,INT npro,pointer data,INT nItems)" ) var initPe = function(num=100,title=""){ Pesgo1.PEreset(); Pesgo1.setSubsets ( 1) Pesgo1.setPoints ( num) // Set Manual Y scale //' //Pesgo1.setManualScaleControlY (0);//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.setBorderTypes ( 1); // Set various properties // Pesgo1.setMainTitle ( title) Pesgo1.setSubTitle ( "") Pesgo1.setYAxisLabel ( "") Pesgo1.setXAxisLabel ( "") 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.setDpiX ( 600) Pesgo1.setDpiY ( 600) Pesgo1.setPEactions ( 0) } var subLine = function(vData,title="合格线"){ Pesgo1.setAnnotationsInFront(false) Pesgo1.setLineAnnotationTextSize(110) Pesgo1.setShowAnnotations(true) Pesgo1.setHorzLineAnnotation(0,vData) Pesgo1.setHorzLineAnnotationType(0,2) Pesgo1.setHorzLineAnnotationColor(0, Pesgo1.PEargb(255, 0, 0, 198)) Pesgo1.setHorzLineAnnotationText(0,title) Pesgo1.setHorzLineAnnotationAxis(0,0) } var insertData = function(x,y){ var yy = {float d=0} yy.d = y; var xx = {float d=1} xx.d = x; newy = raw.buffer(yy); newx = raw.buffer(xx); // Append new values // t = PEvset(Pesgo1.hObject, 3276, newy, 1) t = PEvset(Pesgo1.hObject, 3658, newx, 1) Pesgo1.setPEactions(0) } initPe(100,"实时功率计"); import thread.command; var thFun = thread.command(); thFun.initCurve = function(num,title){ initPe(num,title); } thFun.insertLine = function(vData,title){ subLine(vData,title); } thFun.addData = function(x,y){ insertData(x,y); } winform.show(); win.loopMessage(); return winform;
3D波形图演示
import win.ui; /*DSG{{*/ var winform = win.form(text="aardio form";right=759;bottom=469) winform.add( button={cls="button";text="Button";left=0;top=433;right=136;bottom=470;db=1;dl=1;z=2}; static={cls="static";text="Static";left=0;top=0;right=760;bottom=426;db=1;dl=1;dr=1;dt=1;transparent=1;z=1} ) /*}}*/ import console console.open() //调用dll var dll=raw.loadDll("PEGRP32E.DLL","PEGRP32E"); PEvset = dll.api("PEvsetA","long(ADDR hobj,INT npro,pointer data,INT nItems)" ) var Tdctrl = winform.static.createEmbed("PE3DOE.Pe3doeCtrl.1"); var Pe3do1 = Tdctrl._object; Pe3do1.PEreset() Pe3do1.setMouseDraggingX ( true) Pe3do1.setMouseDraggingY ( true) var index = 0; var xbuf = { float data[10000]={} }; var zbuf = { float data[10000]={} }; var ybuf = { float data[10000]={} }; for(Row=0;99;1){ for(Col=1;100;1){ index = (Row * 100) + Col; xbuf.data[index] = Col; zbuf.data[index] = Row; ybuf.data[index] = math.random()*1000; } } Pe3do1.setSubsets(100) Pe3do1.setPoints(100) var newx = raw.buffer(xbuf); var newz = raw.buffer(zbuf); var newy = raw.buffer(ybuf); PEvset(Pe3do1.hObject, 2135, newx, 10000); PEvset(Pe3do1.hObject, 2140, newy, 10000); PEvset(Pe3do1.hObject, 2900, newz, 10000); Pe3do1.setXZBackColor ( 1) Pe3do1.setYBackColor ( 1) Pe3do1.setPlottingMethod ( 1) // Set various other properties // Pe3do1.setBitmapGradientMode ( true) Pe3do1.setQuickStyle ( 11)//PEQS_DARK_LINE Pe3do1.setSimplePointLegend ( true) Pe3do1.setSimpleLineLegend ( true) Pe3do1.setLegendStyle (1 )//PELS_1_LINE Pe3do1.setMainTitle ( "3d demo in aardio") Pe3do1.setSubTitle ( "chengxu.xyz") Pe3do1.setViewingHeight ( 20) Pe3do1.setDegreeOfRotation ( 275) Pe3do1.setFixedFonts ( true) Pe3do1.setFontSize (0 )//PEFS_LARGE Pe3do1.setPrepareImages ( true) Pe3do1.setCacheBmp ( true) Pe3do1.setFocalRect ( false) Pe3do1.setShadingStyle (0 )//PESS_WHITESHADING Pe3do1.setShowBoundingBox (2 )//PESBB_NEVER Pe3do1.setTextShadows (1 )//PETS_BOLD_TEXT Pe3do1.setMainTitleBold ( true) Pe3do1.setSubTitleBold ( true) Pe3do1.setLabelBold ( true) // Improves metafile exports // Pe3do1.setDpiX ( 600) Pe3do1.setDpiY ( 600) Pe3do1.setRenderEngine (0 )//PERE_GDIPLUS Pe3do1.setAntiAliasGraphics ( true) Pe3do1.setAntiAliasText ( true) winform.button.oncommand = function(id,event){ var index = 0; var xbuf = { float data[10000]={} }; var zbuf = { float data[10000]={} }; var ybuf = { float data[10000]={} }; for(Row=0;99;1){ for(Col=1;100;1){ index = (Row * 100) + Col; xbuf.data[index] = Col; zbuf.data[index] = Row; ybuf.data[index] = math.random()*1000; } } var newx = raw.buffer(xbuf); var newz = raw.buffer(zbuf); var newy = raw.buffer(ybuf); PEvset(Pe3do1.hObject, 2135, newx, 10000); PEvset(Pe3do1.hObject, 2140, newy, 10000); PEvset(Pe3do1.hObject, 2900, newz, 10000); Pe3do1.PEreconstruct3dpolygons(); Pe3do1.setPEactions(2); Pe3do1.setPEactions(3); } winform.show(); win.loopMessage();
登录后方可回帖
记录一个大量数据时候的处理:
ProEssentials官方提供了一种处理大量数据的方法, 可以不用每次去设置YData值, 一次性给图表数据
这个方式需要调用它们提供的PEGRP32E.DLL中的函数PEvset
aardio中调用示例如下: