注册 登录

清河洛

fyne中的画布及画布对象

qingheluo2024-08-07清河洛240
画布就是在程序窗口中规划出一块空白区域用于在其中渲染绘制的区域画布对象就是用于在画布区域中实际渲染绘制的图形,必须将画布对象放置于画布区域中,否则没有任何意义在fyne的GUI编程渲染时,是以画布为基本单位进行渲染的,复杂的组合画布会由内层向外层逐层渲染type CanvasObject表示一个可以添加到画布区域的画布对象 type CanvasObject interface { MinSize() Size // 获取此对象绘制后的最小尺寸 Move(Position) // 将此对象移动到相对于其父对象的给定位置 Position() Position...

画布就是在程序窗口中规划出一块空白区域用于在其中渲染绘制的区域

画布对象就是用于在画布区域中实际渲染绘制的图形,必须将画布对象放置于画布区域中,否则没有任何意义

在fyne的GUI编程渲染时,是以画布为基本单位进行渲染的,复杂的组合画布会由内层向外层逐层渲染

type CanvasObject

表示一个可以添加到画布区域的画布对象

type CanvasObject interface {
    MinSize() Size  // 获取此对象绘制后的最小尺寸

    Move(Position)  // 将此对象移动到相对于其父对象的给定位置
    Position() Position   // 位置返回对象相对于其父对象的当前位置

    Resize(Size)    // 调整此对象的尺寸
    Size() Size     // 返回此对象的当前尺寸

    Hide()          // 隐藏此对象
    Visible() bool  // 此对象是否可见
    Show()          // 显示此对象

    Refresh()       // 重绘此对象,当该对象发生变化时需要调用该方法进行重绘
}

如果画布对象作为在具有布局管理器的容器中时,则不应调用Resize()或Move()方法

type Position

表示相对于父对象的位置

type Position struct {
    X float32
    Y float32
}

NewPos(x float32, y float32) Position  // 使用指定坐标创建一个Position

NewSquareOffsetPos(length float32) Position  // 创建一个x和y值相同的Position

Position的常用方法

AddXY(x, y float32) Position      // 位置中对应的值相加

SubtractXY(x, y float32) Position // 位置中对应的值相减

Components() (float32, float32)  // 返回对应的x和y的值

IsZero() bool  // 是否为零点(x和y均为0)

type Canvas

表示一个用于绘制其包含的画布对象的画布区域

type Canvas interface {
    Content() CanvasObject
    SetContent(CanvasObject)
        // 获取和设置该画布区域的画布对象

    Refresh(CanvasObject)  // 重绘画布中包含的指定画布对象

    Focus(Focusable)      // 聚焦画布中包含的指定可聚焦的画布对象
        Focusable表示可以响应被聚焦的CanvasObject
        接收 FocusGained 和 FocusLost 事件
        当聚焦时在输入文本时调用TypedRune,在按下其他键时调用TypedKey
        type Focusable interface {
            FocusGained()   // 获得焦点时运行
            FocusLost()     // 失去焦点时运行

            TypedRune(rune)  // 获取焦点后文本输入时运行
            TypedKey(*KeyEvent)  // 获取焦点后键盘事件处理函数
        }
        在FocusGain或FocusLost中使用Refresh()函数会导致死锁

    FocusNext()
        // 聚焦画布中下一个可聚焦的画布对象
        // 如果当前画布中没有已聚焦对象或当前聚焦的为最后一个可聚焦对象,则聚焦第一个可聚焦对象

    FocusPrevious()
        // 聚焦画布中上一个可聚焦的画布对象
        // 如果当前画布中没有已聚焦对象或当前聚焦的为第一个可聚焦对象,则聚焦最后一个可聚焦对象

    Unfocus()  // 取消聚焦状态

    Focused() Focusable  // 获取当前聚焦的对象

    Size() Size  // 画布当前尺寸

    Scale() float32  // 获取画布用于渲染的缩放因子

    Overlays() OverlayStack  // 返回叠加堆栈
        OverlayStack是一个CanvasObjects堆栈,用作Canvas的叠加层
        type OverlayStack interface {
            Add(overlay CanvasObject)
            List() []CanvasObject
            Remove(overlay CanvasObject)
            Top() CanvasObject
        }

    OnTypedRune() func(rune)  // 获取焦点后文本输入时运行的函数
    SetOnTypedRune(func(rune))

    OnTypedKey() func(*KeyEvent)  // 获取焦点后键盘事件处理函数
    SetOnTypedKey(func(*KeyEvent))

    AddShortcut(shortcut Shortcut, handler func(shortcut Shortcut))
    RemoveShortcut(shortcut Shortcut)
        // 用于设定和删除键盘快捷方式

    Capture() image.Image  // 截屏画布当前的渲染图片

    PixelCoordinateForPosition(Position) (int, int)
        // 根据给定的相对于画布的位置返回相对于整个窗口的位置

    InteractiveArea() (Position, Size)
        // 返回画布中可用于交互部分的区域的位置和大小
}


网址导航