为了账号安全,请及时绑定邮箱和手机立即绑定

使用 AddArc 使用 RasterX 包创建一个“饼图元素”

使用 AddArc 使用 RasterX 包创建一个“饼图元素”

Go
ITMISS 2022-12-19 14:09:06
我正在为 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)

//img1.sycdn.imooc.com//63a00020000126a803070305.jpg

查看完整回答
反对 回复 2022-12-19
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

这只是一个猜测,但不AddArc想要弧度角而不是度数吗?



查看完整回答
反对 回复 2022-12-19
  • 2 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号