3

我正在一个 SVG 小型系统中绘制图表(折线、条形和饼图),但饼图有一些奇怪的问题......当图表中的部分小于圆的一半时,功能完美运行,一切都被正确绘制(见下图):

在此处输入图像描述

但是,当馅饼的一部分大于圆的一半时,该部分绘制错误,好像圆弧的中心被移动了(见下图,注意红色部分是“空”圆,其中必须绘制部分:我用红色填充它以检查部分是否正确绘制):

在此处输入图像描述

我正在使用带有绝对参数的 SVG 的“路径”函数来绘制每个饼图部分。我将一些参数传递给函数:

$circleCenter_ 对应圆心的 X 和 Y 位置。$valPos[i][0-1] 包含由中心和圆上的两个点(该部分应该结束的位置)形成的三角形的每个点的 X 和 Y 位置。

这是我正在使用的“路径”:

<path d="M<?php echo $circleCenterX." ".$circleCenterY; ?> 
L<?php echo $valPos[$i][0][0].",".$valPos[$i][0][1] ?> 
A<?php echo $circleRadius.",".$circleRadius; ?> 0 0,1 <?php echo $valPos[$i][1][0].",".$valPos[$i][1][1]; ?> Z" 
(...) />

我不明白为什么当部分小于半圆时它工作正常,以及为什么当部分大于半圆时中心似乎“移动”了。当然 $circleCenter 变量在饼图绘制函数中永远不会被修改......

对此有任何线索吗?

提前感谢您的时间和精力!:)

4

1 回答 1

0

You need to set the large-arc flag to 1 if the percentage of the portion is > 50%.

于 2013-09-03T11:26:22.107 回答