06. 矢量 Raster

矢量 Raster #

canvas.Raster 类似于图像,但在屏幕上为每个像素精确绘制一个点。这意味着,随着用户界面缩放或图像调整大小,将请求更多像素来填充空间。为此,我们使用一个 Generator 函数,如此示例所示——它将用于返回每个像素的颜色。

生成器函数可以基于像素(如此示例中我们为每个像素生成一个新的随机颜色)或基于完整图像。生成完整图像(使用 canvas.NewRaster())更高效,但有时直接控制像素更方便。

package main

import (
	"image/color"
	"math/rand"

	"fyne.io/fyne/v2"
	"fyne.io/fyne/v2/app"
	"fyne.io/fyne/v2/canvas"
)

func main() {
	myApp := app.New()
	w := myApp.NewWindow("Raster")

	raster := canvas.NewRasterWithPixels(
		func(_, _, w, h int) color.Color {
			return color.RGBA{R: uint8(rand.Intn(255)),
				G: uint8(rand.Intn(255)),
				B: uint8(rand.Intn(255)), A: 0xff}
		})
	// raster := canvas.NewRasterFromImage()
	w.SetContent(raster)
	w.Resize(fyne.NewSize(120, 100))
	w.ShowAndRun()
}

如果您的像素数据存储在图像中,您可以通过 NewRasterFromImage() 函数加载它,该函数将加载图像以在屏幕上精确显示像素。