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

By admin at 2021-04-11 • 1人收藏 • 1139人看过

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();


登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...