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进行处理,非常感谢!