ChartDirector 6.3(C ++版)教程分享——饼状图下的侧标签布局

ChartDirector 6.3(C ++版)教程分享——侧标签布局

ChartDirector 6.3(C ++版)教程分享——饼状图下的侧标签布局

此示例演示了用于定位扇区标签的“侧标签布局”方法。它还演示了金属背景颜色,以及具有玻璃阴影效果和圆角的扇形标签。

使用“侧标签布局”,扇区标签位于图表的左侧和右侧。相比之下,所有先前的示例都使用“圆形标签布局”,其中标签围绕饼图圆形地定位。

“侧标签布局”的优点是标签会自动上下移动以避免重叠。在上图中,馅饼右下方有许多小扇区。请注意,标签会移动以避免重叠。

  • 金色背景通过使用实现图:: goldColor创建金色,然后用它在PieChart.PieChart作为图表背景颜色。
  • 类似地,图表标题的粉红色金属背景是通过使用Chart :: metalColor创建粉红色金属颜色,然后使用标题TextBox对象的Box.setBackground将其设置为背景颜色来实现的。
  • 侧标签布局方法使用PieChart.setLabelLayout指定。
  • 扇区标记的玻璃遮光效果是使用定义图表:: glassEffect,然后应用到使用扇区标签Box.setBackground扇区标签原型对象(通过获得的PieChart.setLabelStyle)。
  • 扇区标签的圆角使用扇区标签原型对象的Box.setRoundedCorners进行配置。

此示例演示了一种通过使用PieChart.setStartAngle调整第一个扇区的起始角度来进一步改进标签布局的技术。

如果数据有很多小值并且已经排序,那么小扇区就会挤在一起。对于这些情况,如果小扇区位于饼图的左侧或右侧,而不是顶部或底部,则标签布局将是最佳的(需要最少的移位)。

如果数据按降序排列(如本例所示),则可以使用135度的起始角度和顺时针扇区布局将小扇区放置在大约45-135度(饼图的右侧)。如果数据按升序排列,则可以使用具有顺时针扇区布局的45度的起始角度来实现类似的效果。

源代码清单

[以下代码可在“cppdemo / threedpie”中找到。Mf版本的代码可在“mfcdemo / mfcdemo”中找到(仅限Windows版本)。QT版本的代码可在“qtdemo / qtdemo”中找到。 

#include“chartdir.h”int main(int argc,char * argv []){    //饼图的数据    double data [] = {35,30,25,7,6,5,4,3,2,1};    //饼图的标签    const char * labels [] = {“Labor”,“Production”,“Facilities”,“Taxes”,“Misc”,“Legal”,        “保险”,“许可证”,“运输”,“利息”};    //创建一个大小为560 x 270像素的PieChart对象,带有金色背景和1像素3D    // 边界    PieChart * c =新的PieChart(560,270,Chart :: goldColor(),-1,1);    //使用15pt Times Bold Italic字体和金属粉红色背景颜色添加标题框    c-> addTitle(“Project Cost Breakdown”,“timesbi.ttf”,15) - > setBackground(Chart :: metalColor(        0xff9999));    //将饼图的中心设置为(280,135),将半径设置为110像素    c-> setPieSize(280,135,110);    //使用20像素3D深度在3D中绘制饼图    C-> set3D(20);    //使用侧标签布局方法    C-> setLabelLayout(图::页面布局);    //将标签框背景颜色设置为与扇区颜色相同,具有玻璃效果,并使用    // 5像素圆角    TextBox * t = c-> setLabelStyle();    t-> setBackground(Chart :: SameAsMainColor,Chart :: Transparent,Chart :: glassEffect());    T-> setRoundedCorners(5);    //将扇区的边框颜色设置为与填充颜色相同的颜色。设置线条颜色    //连接线为黑色(0x0)    c-> setLineColor(Chart :: SameAsMainColor,0x000000);    //当有许多小扇区时,将起始角度设置为135度可以改善布局    //数据数组的结尾(即数据按降序排序)。是因为这个    //使小扇区位于水平轴附近,文本标签的位置最小    //倾向于重叠 对于按升序排序的数据,可以是45度的起始角度    //用来代替。    C-> setStartAngle(135);    //设置饼图数据和饼图标签    c-> setData(DoubleArray(data,(int)(sizeof(data)/ sizeof(data [0]))),StringArray(labels,(int)(        sizeof(labels)/ sizeof(labels [0]))));    //输出图表    C-> makeChart( “sidelabelpie.png”);    //释放资源    删除c;    返回0;}
 

标签:图表

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年10月12日
下一篇 2018年10月12日

相关推荐

发表回复

登录后才能评论