如何在Fyne GUI包中使用自定义坐标绘制图形?
在Fyne中使用自定义坐标绘制线条
要在Fyne里用自主控制的坐标绘制线条,核心是利用canvas.Line对象的Position1和Position2属性,这两个属性分别控制线条的起点和终点坐标,完全覆盖默认的坐标设置。
基础示例:绘制单条自定义线条
修改你提供的示例代码,通过指定Position1和Position2来定义线条的起止坐标:
package main import ( "image/color" "fyne.io/fyne/v2" "fyne.io/fyne/v2/app" "fyne.io/fyne/v2/canvas" ) func main() { myApp := app.New() w := myApp.NewWindow("Custom Line") // 创建白色线条 line := canvas.NewLine(color.White) line.StrokeWidth = 5 // 设置起点坐标为(20, 30) line.Position1 = fyne.NewPos(20, 30) // 设置终点坐标为(80, 70) line.Position2 = fyne.NewPos(80, 70) w.SetContent(line) w.Resize(fyne.NewSize(100, 100)) w.ShowAndRun() }
关键说明
fyne.NewPos(x, y)用来创建指定坐标的位置,Fyne的坐标原点在窗口左上角,X轴向右递增,Y轴向下递增。- 如果需要绘制多条自定义线条或混合其他图形,推荐使用
container.NewWithoutLayout()容器,它不会自动布局元素,所有元素的位置完全由你通过各自的坐标属性控制:
package main import ( "image/color" "fyne.io/fyne/v2" "fyne.io/fyne/v2/app" "fyne.io/fyne/v2/canvas" "fyne.io/fyne/v2/container" ) func main() { myApp := app.New() w := myApp.NewWindow("Multiple Custom Lines") // 创建无布局容器,完全自定义元素位置 customContainer := container.NewWithoutLayout() // 第一条对角线:从(10,10)到(90,90) line1 := canvas.NewLine(color.White) line1.StrokeWidth = 3 line1.Position1 = fyne.NewPos(10, 10) line1.Position2 = fyne.NewPos(90, 90) customContainer.Add(line1) // 第二条对角线:从(10,90)到(90,10) line2 := canvas.NewLine(color.RGBA{R: 255, G: 0, B: 0, A: 255}) line2.StrokeWidth = 3 line2.Position1 = fyne.NewPos(10, 90) line2.Position2 = fyne.NewPos(90, 10) customContainer.Add(line2) w.SetContent(customContainer) w.Resize(fyne.NewSize(100, 100)) w.ShowAndRun() }
内容的提问来源于stack exchange,提问作者T. J. Foster
相关产品推荐
相关产品推荐

