You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 13:30:10