登录
首页 >  Golang >  Go问答

使用RasterX包的AddArc函数绘制“扇形图元素”

来源:stackoverflow

时间:2024-03-15 22:00:28 129浏览 收藏

在使用 rasterx 包绘制图表时,用户遇到了在创建饼图元素时绘制圆而不是圆弧的问题。虽然该包基于 SVG 2.0 规范,但用户无法成功绘制圆弧。

问题内容

我正在为 fyne 开发一个图表小部件,我使用 rasterx 包(https://github.com/srwiley/rasterx)并且效果很好。但我花了几个小时尝试制作圆弧(以创建饼图元素),但没有成功。

让我们以此为起点:

cx, cy := float64(w/2.0), float64(h/2.0)
r := float64(w / 3.0)
angle := 45.0
rot := angle * math.pi / 180.0

我使用 https://github.com/srwiley/rasterx/blob/master/shapes.go#l99 上的 addarc 函数来了解原理并执行以下操作:

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 之外的其他软件包,请不要告诉我使用其他软件包。


正确答案


points 中的 px、py 需要与传递给 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)

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

以上就是《使用RasterX包的AddArc函数绘制“扇形图元素”》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>