gg/examples/pattern-fill.go
2016-11-21 11:01:12 +08:00

36 lines
675 B
Go

package main
import (
"fmt"
"math"
"github.com/fogleman/gg"
)
func main() {
im, err := gg.LoadPNG("examples/lenna.png")
if err != nil {
panic(err)
}
var x0, y0, x1, y1 float64 = 5, 5, 15, 15
a := math.Atan2(y1-y0, x1-x0)
d := a * 180 / math.Pi
fmt.Println(a, d)
a = (2*math.Pi - a)
d = a * 180 / math.Pi
fmt.Println(a, d)
m := gg.Translate(-x0, -y0).Rotate(a)
tx, ty := m.TransformPoint(5, 5)
fmt.Println(tx, ty)
pattern := gg.NewSurfacePattern(im, gg.RepeatBoth)
dc := gg.NewContext(600, 600)
dc.MoveTo(20, 20)
dc.LineTo(590, 20)
dc.LineTo(590, 590)
dc.LineTo(20, 590)
dc.ClosePath()
dc.SetFillStyle(pattern)
dc.Fill()
dc.SavePNG("out.png")
}