我正在為 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 關注
- 123 瀏覽
添加回答
舉報
0/150
提交
取消