我对草图应用程序生成甜甜圈图的方式几乎没有问题。
这就是在 Sketch 应用程序中构建甜甜圈图的方式
- 我创建了一个 200 像素 x 200 像素的圆圈
- 空填充。行程 25(中心位置)。这将是空状态圈,所以我将其着色为灰色
- 我已经复制了这个基圆来创建我的第一个 50% 段(总共 3 个,50%、25%、25%)
- 对于我的第一个 50% 段,“破折号”的长度为 314。似乎破折号是从 6 点钟位置绘制的,并沿逆时针方向移动(这在其他段中会更明显)。但是,我更喜欢它从 12 点开始并顺时针方向移动。
- 复制圆圈以创建 25% 的第二段,这等于 157 的“Dash”和 471 的“Gap”。
- 由于画圆的方式(见第 4 点),我应用了 90 度的变换
- 最后一段,和第二段类似,只是变换了180度
生成的 SVG 不代表 Sketch Questions 中绘制的内容:
- 如何确保最终的 SVG 看起来像 Sketch 应用程序中设计的那样
- 在草图中,如何确保笔画从 12 点钟位置开始(我猜是变形?)并顺时针绘制。
Sketch 生成的代码 ( https://jsfiddle.net/BrightPixels/932w6j9d/ )
<?xml version="1.0" encoding="UTF-8"?>
<svg width="226px" height="226px" viewBox="0 0 226 226" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 45.2 (43514) - http://www.bohemiancoding.com/sketch -->
<title>donut-chart</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="iPad" transform="translate(-236.000000, -213.000000)" stroke-width="25">
<g id="donut-chart" transform="translate(249.000000, 226.000000)">
<circle id="base" stroke="#D8D8D8" cx="100" cy="100" r="100"></circle>
<circle id="segment1" stroke="#FFD900" stroke-dasharray="314,314" cx="100" cy="100" r="100"></circle>
<circle id="segment2" stroke="#64B445" stroke-dasharray="157,471" transform="translate(100.000000, 100.000000) rotate(90.000000) translate(-100.000000, -100.000000) " cx="100" cy="100" r="100"></circle>
<circle id="segment3" stroke="#004FB6" stroke-dasharray="157,471" transform="translate(100.000000, 100.000000) rotate(180.000000) translate(-100.000000, -100.000000) " cx="100" cy="100" r="100"></circle>
</g>
</g>
</g>
</svg>