graphics.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package screens
  2. import (
  3. "image/color"
  4. "time"
  5. "fyne.io/fyne"
  6. "fyne.io/fyne/canvas"
  7. "fyne.io/fyne/layout"
  8. "fyne.io/fyne/theme"
  9. )
  10. func rgbGradient(x, y, w, h int) color.Color {
  11. g := int(float32(x) / float32(w) * float32(255))
  12. b := int(float32(y) / float32(h) * float32(255))
  13. return color.RGBA{uint8(255 - b), uint8(g), uint8(b), 0xff}
  14. }
  15. // GraphicsScreen loads a graphics example panel for the demo app
  16. func GraphicsScreen() fyne.CanvasObject {
  17. gradient := canvas.NewHorizontalGradient(color.RGBA{0x80, 0, 0, 0xff}, color.RGBA{0, 0x80, 0, 0xff})
  18. go func() {
  19. for {
  20. time.Sleep(time.Second)
  21. gradient.Angle += 45
  22. if gradient.Angle >= 360 {
  23. gradient.Angle -= 360
  24. }
  25. canvas.Refresh(gradient)
  26. }
  27. }()
  28. content := fyne.NewContainerWithLayout(layout.NewFixedGridLayout(fyne.NewSize(90, 90)),
  29. &canvas.Rectangle{FillColor: color.RGBA{0x80, 0, 0, 0xff},
  30. StrokeColor: color.RGBA{0xff, 0xff, 0xff, 0xff},
  31. StrokeWidth: 1},
  32. canvas.NewImageFromResource(theme.FyneLogo()),
  33. &canvas.Line{StrokeColor: color.RGBA{0, 0, 0x80, 0xff}, StrokeWidth: 5},
  34. &canvas.Circle{StrokeColor: color.RGBA{0, 0, 0x80, 0xff},
  35. FillColor: color.RGBA{0x30, 0x30, 0x30, 0x60},
  36. StrokeWidth: 2},
  37. canvas.NewText("Text", color.RGBA{0, 0x80, 0, 0xff}),
  38. canvas.NewRasterWithPixels(rgbGradient),
  39. gradient,
  40. canvas.NewRadialGradient(color.RGBA{0x80, 0, 0, 0xff}, color.RGBA{0, 0x80, 0x80, 0xff}),
  41. )
  42. return fyne.NewContainerWithLayout(layout.NewAdaptiveGridLayout(2), content, IconsPanel())
  43. }