aardio调用ChartDirector实现饼状图表功能示例

By admin at 2021-04-11 • 0人收藏 • 278人看过

ChartDirector是著名的商业图表, 包含有以下功能:

https://www.advsofteng.com

可以免费下载使用, 但是免费版底部会有一个黄色的版权条.

image.png



这里演示下饼状图表的aardio中调用简单例子:(这里是在文件目录生成一个图表图片)

image.png

import win.ui;
/*DSG{{*/
mainForm = win.form(text="aardio工程6";right=690;bottom=428)
mainForm.add()
/*}}*/

var dll = ..raw.loadDll("\res\chartdir60.dll",,"cdecl");
CPieChart_create = dll.api("CPieChart_create","pointer(int,int,int,int,int)" );
PieChart2BaseChart = dll.api("PieChart2BaseChart","pointer(pointer)" );
CPieChart_setPieSize = dll.api("CPieChart_setPieSize","void(pointer,int,int,int)" )
CPieChart_set3D = dll.api("CPieChart_set3D","void(pointer,int,double,bool)" )
CPieChart_setExplode = dll.api("CPieChart_setExplode","void(pointer,int,int)" )
CBaseChart_addTitle = dll.api("CBaseChart_addTitle","pointer(pointer,string,string,double,int,int,int)" )
CBaseChart_makeChart = dll.api("CBaseChart_makeChart","bool(pointer,string)" )
CPieChart_setData = dll.api("CPieChart_setData","void(pointer,pointer,int,pointer,int)" )
var paichart =CPieChart_create(280, 240,0xffffff,0,0);
var chart = PieChart2BaseChart(paichart);
CPieChart_setPieSize(paichart,140, 130, 80);
CBaseChart_addTitle(chart,"aardio-ChartDirector-demo","bold",12,0,0xffffff,0);
CPieChart_set3D(paichart,-1,-1,false);
var buff1 = raw.buffer({double data[7]={45, 18, 15, 12, 8, 30, 25}});
var buff2 =  raw.buffer({string data[7]={"aardio", "c#", ".net", "reby", "labview", "html","php"}});
CPieChart_setData(paichart,buff1,7,buff2,7);
CPieChart_setExplode(paichart,0,-1);
CBaseChart_makeChart(chart,"demo.png");

mainForm.show();
return win.loopMessage();

其他功能类似, 不过看c++的示例需要把类库自己翻译过来.

注意看上面的代码中, 有CPieChart和CBaseChart开头, 它们分别对应操作不同的对象,所以后面的参数里第一个参数就是不同的那个对象, 针对这个示例, Pie就是饼图对象和Base基类对象. 这点要注意, 要不然得不到你想要的效果.

1 个回复 | 最后更新于 2021-04-12
2021-04-12   #1

感谢,测试一下 ChartDirector 的 COM 控件:

//RUNAS//
import win.ui; 
var cd = com.TryCreateObject("ChartDirector.API")
if(!cd){
    import inet.installer;
    if(inet.installer("ChartDirector","https://www.advsofteng.net/chartdir_com.exe")){
        var file = io.open("C:\Program Files (x86)\ChartDirector\lib\chartdir60.dll","r+b")
        if(file){
            // C:\Program Files (x86)目录写文件需要管理权限
            file.seek("set",0x218054)
            file.write('\0\0');
            file.seek("set",0x218084)
            file.write('\0\0');
            file.close();
        } 
        
        cd = com.TryCreateObject("ChartDirector.API")
    }
    else{ return; }
}
/*DSG{{*/
var winform = win.form(text="ChartDirector 控件测试";right=759;bottom=469;bgcolor=16777215)
winform.add(
picturebox={cls="plus";left=31;top=16;right=726;bottom=436;bgcolor=16777215;repeat="scale";z=1}
)
/*}}*/
 
// Create a XYChart object of size 250 x 250 pixels
var  c = cd.XYChart(250, 250)
 
// Set the plotarea at (30, 20) and of size 200 x 200 pixels
c.setPlotArea(30, 20, 200, 200)
 
// Add a bar chart layer using the given data
c.addBarLayer({85, 156, 179.5, 211, 123})
 
// Set the labels on the x axis.
c.xAxis().setLabels({"Mon", "Tue", "Wed", "Thu", "Fri"})
     
//c.makeChart2(cd.PNG);
//c.makeChart("demo.png");
//ChartDirector 自带的显示控件效果很差,改用 plus 控件
var pic = com.GetIPicture( c.makePicture() );
//pic.Save("/test.jpg");
 
winform.picturebox.background = pic;
     
winform.show();
win.loopMessage();


登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前在学aardio+halcon机器视觉.
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
苏扬博客:苏扬博客
C大Aardio论坛:Aar爱好者论坛
简码教程网:简码编程
AARDIO语言QQ群:70517368
本 站 主 站:Stm32cube中文网
Htmlayout界面在线学习文档
Sciter中文在线文档Sciter在线学习文档
aardio在线手册Aardio在线手册

赞助商:才仁机械
下载站:非凡软件站
Loading...