我正在为 Fyne 开发图表小部件,我使用rasterx包 ( https://github.com/srwiley/rasterx ) 并且效果很好。但我花了几个小时尝试制作圆弧(创建饼图元素)但没有成功。让我们以此为起点:cx, cy := float64(w/2.0), float64(h/2.0)r := float64(w / 3.0)angle := 45.0rot := angle * math.Pi / 180.0我在https://github.com/srwiley/rasterx/blob/master/shapes.go#L99AddArc获取函数来理解原理并执行:points := []float64{r, r, angle, 1, 0, px, py}stroker.Start(rasterx.ToFixedP(px, py))rasterx.AddArc(points, cx, cy, px, py, stroker)stroker.Stop(false)stroker.Draw()结果是一个圆,而不是弧。由于这个rasterx包是基于 SVG 2.0 规范的,所以我可能漏掉了什么。你能帮我看看如何为给定角度创建“饼图元素”吗?非常感谢。PS:我不应该使用其他包rasterx,请不要告诉我使用另一个包。
2 回答
桃花长相依
TA贡献1860条经验 获得超8个赞
px, py inpoints需要与传递给AddArc. 这对我有用:
angle := 45.0
rot1 := angle * math.Pi / 180.0
rot2 := (angle - 90) * math.Pi / 180.0
p1x := cx + r*math.Cos(rot1)
p1y := cy + r*math.Sin(rot1)
p2x := cx + r*math.Cos(rot2)
p2y := cy + r*math.Sin(rot2)
points := []float64{r, r, angle, 1, 0, p2x, p2y}
...
stroker.Start(rasterx.ToFixedP(p1x, p1y))
rasterx.AddArc(points, cx, cy, p1x, p1y, stroker)

- 2 回答
- 0 关注
- 141 浏览
添加回答
举报
0/150
提交
取消
