mirror of
https://github.com/zserge/fenster.git
synced 2025-04-23 01:48:40 +03:00
55 lines
888 B
Go
55 lines
888 B
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
_ "embed"
|
|
"image"
|
|
"image/color"
|
|
"image/draw"
|
|
"image/png"
|
|
"log"
|
|
"math/rand"
|
|
"time"
|
|
|
|
"github.com/zserge/fenster"
|
|
)
|
|
|
|
//go:embed Testbild.png
|
|
var testimage []byte
|
|
|
|
func randomMask(r image.Rectangle) image.Image {
|
|
img := image.NewAlpha(r)
|
|
for x := r.Min.X; x < r.Max.X; x++ {
|
|
for y := r.Min.Y; y < r.Max.Y; y++ {
|
|
if rand.Uint32()%64 == 0 {
|
|
img.Set(x, y, color.Opaque)
|
|
}
|
|
}
|
|
}
|
|
return img
|
|
}
|
|
|
|
func main() {
|
|
f, err := fenster.New(320, 240, "TV")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer f.Close()
|
|
|
|
bg, err := png.Decode(bytes.NewBuffer(testimage))
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
for f.Loop(time.Second / 24) {
|
|
// If escape is pressed - exit
|
|
if f.Key(27) {
|
|
break
|
|
}
|
|
|
|
draw.Draw(f, f.Bounds(), bg, image.Point{}, draw.Src)
|
|
snow := randomMask(f.Bounds())
|
|
draw.Draw(f, f.Bounds(), snow, image.Point{}, draw.Over)
|
|
}
|
|
}
|