本文整理汇总了Golang中github.com/shibukawa/nanovgo.Context.Rotate方法的典型用法代码示例。如果您正苦于以下问题:Golang Context.Rotate方法的具体用法?Golang Context.Rotate怎么用?Golang Context.Rotate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/shibukawa/nanovgo.Context
的用法示例。
在下文中一共展示了Context.Rotate方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: drawScissor
func drawScissor(ctx *nanovgo.Context, x, y, t float32) {
ctx.Save()
// Draw first rect and set scissor to it's area.
ctx.Translate(x, y)
ctx.Rotate(nanovgo.DegToRad(5))
ctx.BeginPath()
ctx.Rect(-20, -20, 60, 40)
ctx.SetFillColor(nanovgo.RGBA(255, 0, 0, 255))
ctx.Fill()
ctx.Scissor(-20, -20, 60, 40)
// Draw second rectangle with offset and rotation.
ctx.Translate(40, 0)
ctx.Rotate(t)
// Draw the intended second rectangle without any scissoring.
ctx.Save()
ctx.ResetScissor()
ctx.BeginPath()
ctx.Rect(-20, -10, 60, 30)
ctx.SetFillColor(nanovgo.RGBA(255, 128, 0, 64))
ctx.Fill()
ctx.Restore()
// Draw second rectangle with combined scissoring.
ctx.IntersectScissor(-20, -10, 60, 30)
ctx.BeginPath()
ctx.Rect(-20, -10, 60, 30)
ctx.SetFillColor(nanovgo.RGBA(255, 128, 0, 255))
ctx.Fill()
ctx.Restore()
}
示例2: RenderDemo
func RenderDemo(ctx *nanovgo.Context, mx, my, width, height, t float32, blowup bool, data *DemoData) {
drawEyes(ctx, width-250, 50, 150, 100, mx, my, t)
drawParagraph(ctx, width-450, 50, 150, 100, mx, my)
drawGraph(ctx, 0, height/2, width, height/2, t)
drawColorWheel(ctx, width-300, height-300, 250.0, 250.0, t)
// Line joints
drawLines(ctx, 120, height-50, 600, 50, t)
// Line widths
drawWidths(ctx, 10, 50, 30)
// Line caps
drawCaps(ctx, 10, 300, 30)
drawScissor(ctx, 50, height-80, t)
ctx.Save()
defer ctx.Restore()
if blowup {
ctx.Rotate(sinF(t*0.3) * 5.0 / 180.0 * nanovgo.PI)
ctx.Scale(2.0, 2.0)
}
// Widgets
drawWindow(ctx, "Widgets `n Stuff", 50, 50, 300, 400)
var x float32 = 60.0
var y float32 = 95.0
drawSearchBox(ctx, "Search", x, y, 280, 25)
y += 40
drawDropDown(ctx, "Effects", x, y, 280, 28)
popy := y + 14
y += 45
// Form
drawLabel(ctx, "Login", x, y, 280, 20)
y += 25
drawEditBox(ctx, "Email", x, y, 280, 28)
y += 35
drawEditBox(ctx, "Password", x, y, 280, 28)
y += 38
drawCheckBox(ctx, "Remember me", x, y, 140, 28)
drawButton(ctx, IconLOGIN, "Sign in", x+138, y, 140, 28, nanovgo.RGBA(0, 96, 128, 255))
y += 45
// Slider
drawLabel(ctx, "Diameter", x, y, 280, 20)
y += 25
drawEditBoxNum(ctx, "123.00", "px", x+180, y, 100, 28)
drawSlider(ctx, 0.4, x, y, 170, 28)
y += 55
drawButton(ctx, IconTRASH, "Delete", x, y, 160, 28, nanovgo.RGBA(128, 16, 8, 255))
drawButton(ctx, 0, "Cancel", x+170, y, 110, 28, nanovgo.RGBA(0, 0, 0, 0))
// Thumbnails box
drawThumbnails(ctx, 365, popy-30, 160, 300, data.Images, t)
}
示例3: Draw
func (c *ColorWheel) Draw(self Widget, ctx *nanovgo.Context) {
c.WidgetImplement.Draw(self, ctx)
if !c.visible {
return
}
x := float32(c.x)
y := float32(c.y)
w := float32(c.w)
h := float32(c.h)
ctx.Save()
defer ctx.Restore()
cx := x + w*0.5
cy := y + h*0.5
r1 := toF(w < h, w, h)*0.5 - 5.0
r0 := r1 * 0.75
aeps := 0.7 / r1 // half a pixel arc length in radians (2pi cancels out).
for i := 0; i < 6; i++ {
a0 := float32(i)/6.0*nanovgo.PI*2.0 - aeps
a1 := float32(i+1)/6.0*nanovgo.PI*2.0 + aeps
ctx.BeginPath()
ctx.Arc(cx, cy, r0, a0, a1, nanovgo.Clockwise)
ctx.Arc(cx, cy, r1, a1, a0, nanovgo.CounterClockwise)
ctx.ClosePath()
sin1, cos1 := sinCosF(a0)
sin2, cos2 := sinCosF(a1)
ax := cx + cos1*(r0+r1)*0.5
ay := cy + sin1*(r0+r1)*0.5
bx := cx + cos2*(r0+r1)*0.5
by := cy + sin2*(r0+r1)*0.5
color1 := nanovgo.HSLA(a0/(nanovgo.PI*2), 1.0, 0.55, 255)
color2 := nanovgo.HSLA(a1/(nanovgo.PI*2), 1.0, 0.55, 255)
paint := nanovgo.LinearGradient(ax, ay, bx, by, color1, color2)
ctx.SetFillPaint(paint)
ctx.Fill()
}
ctx.BeginPath()
ctx.Circle(cx, cy, r0-0.5)
ctx.Circle(cx, cy, r1+0.5)
ctx.SetStrokeColor(nanovgo.MONO(0, 64))
ctx.Stroke()
// Selector
ctx.Save()
defer ctx.Restore()
ctx.Translate(cx, cy)
ctx.Rotate(c.hue * nanovgo.PI * 2)
// Marker on
u := clampF(r1/50, 1.5, 4.0)
ctx.SetStrokeWidth(u)
ctx.BeginPath()
ctx.Rect(r0-1, -2*u, r1-r0+2, 4*u)
ctx.SetStrokeColor(nanovgo.MONO(255, 192))
ctx.Stroke()
paint := nanovgo.BoxGradient(r0-3, -5, r1-r0+6, 10, 2, 4, nanovgo.MONO(0, 128), nanovgo.MONO(0, 0))
ctx.BeginPath()
ctx.Rect(r0-2-10, -4-10, r1-r0+4+20, 8+20)
ctx.Rect(r0-2, -4, r1-r0+4, 8)
ctx.PathWinding(nanovgo.Hole)
ctx.SetFillPaint(paint)
ctx.Fill()
// Center triangle
r := r0 - 6
sin1, cos1 := sinCosF(120.0 / 180.0 * nanovgo.PI)
sin2, cos2 := sinCosF(-120.0 / 180.0 * nanovgo.PI)
ax := cos1 * r
ay := sin1 * r
bx := cos2 * r
by := sin2 * r
ctx.BeginPath()
ctx.MoveTo(r, 0)
ctx.LineTo(ax, ay)
ctx.LineTo(bx, by)
ctx.ClosePath()
triPaint1 := nanovgo.LinearGradient(r, 0, ax, ay, nanovgo.HSL(c.hue, 1.0, 0.5), nanovgo.MONO(255, 255))
ctx.SetFillPaint(triPaint1)
ctx.Fill()
triPaint2 := nanovgo.LinearGradient((r+ax)*0.5, ay*0.5, bx, by, nanovgo.MONO(0, 0), nanovgo.MONO(0, 255))
ctx.SetFillPaint(triPaint2)
ctx.Fill()
// selector circle on triangle
px, py := c.calculatePosition()
ctx.SetStrokeWidth(u)
ctx.BeginPath()
ctx.Circle(px, py, 2*u)
ctx.SetStrokeColor(nanovgo.MONO(255, 192))
ctx.Stroke()
}
示例4: drawColorWheel
func drawColorWheel(ctx *nanovgo.Context, x, y, w, h, t float32) {
var r0, r1, ax, ay, bx, by, aeps, r float32
hue := sinF(t * 0.12)
ctx.Save()
defer ctx.Restore()
/* ctx.BeginPath()
ctx.Rect(x,y,w,h)
ctx.FillColor(nanovgo.RGBA(255,0,0,128))
ctx.Fill()*/
cx := x + w*0.5
cy := y + h*0.5
if w < h {
r1 = w*0.5 - 5.0
} else {
r1 = h*0.5 - 5.0
}
r0 = r1 - 20.0
aeps = 0.5 / r1 // half a pixel arc length in radians (2pi cancels out).
for i := 0; i < 6; i++ {
a0 := float32(i)/6.0*nanovgo.PI*2.0 - aeps
a1 := float32(i+1.0)/6.0*nanovgo.PI*2.0 + aeps
ctx.BeginPath()
ctx.Arc(cx, cy, r0, a0, a1, nanovgo.Clockwise)
ctx.Arc(cx, cy, r1, a1, a0, nanovgo.CounterClockwise)
ctx.ClosePath()
ax = cx + cosF(a0)*(r0+r1)*0.5
ay = cy + sinF(a0)*(r0+r1)*0.5
bx = cx + cosF(a1)*(r0+r1)*0.5
by = cy + sinF(a1)*(r0+r1)*0.5
paint := nanovgo.LinearGradient(ax, ay, bx, by, nanovgo.HSLA(a0/(nanovgo.PI*2), 1.0, 0.55, 255), nanovgo.HSLA(a1/(nanovgo.PI*2), 1.0, 0.55, 255))
ctx.SetFillPaint(paint)
ctx.Fill()
}
ctx.BeginPath()
ctx.Circle(cx, cy, r0-0.5)
ctx.Circle(cx, cy, r1+0.5)
ctx.SetStrokeColor(nanovgo.RGBA(0, 0, 0, 64))
ctx.SetStrokeWidth(1.0)
ctx.Stroke()
// Selector
ctx.Translate(cx, cy)
ctx.Rotate(hue * nanovgo.PI * 2)
// Marker on
ctx.SetStrokeWidth(2.0)
ctx.BeginPath()
ctx.Rect(r0-1, -3, r1-r0+2, 6)
ctx.SetStrokeColor(nanovgo.RGBA(255, 255, 255, 192))
ctx.Stroke()
paint := nanovgo.BoxGradient(r0-3, -5, r1-r0+6, 10, 2, 4, nanovgo.RGBA(0, 0, 0, 128), nanovgo.RGBA(0, 0, 0, 0))
ctx.BeginPath()
ctx.Rect(r0-2-10, -4-10, r1-r0+4+20, 8+20)
ctx.Rect(r0-2, -4, r1-r0+4, 8)
ctx.PathWinding(nanovgo.Hole)
ctx.SetFillPaint(paint)
ctx.Fill()
// Center triangle
r = r0 - 6
ax = cosF(120.0/180.0*nanovgo.PI) * r
ay = sinF(120.0/180.0*nanovgo.PI) * r
bx = cosF(-120.0/180.0*nanovgo.PI) * r
by = sinF(-120.0/180.0*nanovgo.PI) * r
ctx.BeginPath()
ctx.MoveTo(r, 0)
ctx.LineTo(ax, ay)
ctx.LineTo(bx, by)
ctx.ClosePath()
paint = nanovgo.LinearGradient(r, 0, ax, ay, nanovgo.HSLA(hue, 1.0, 0.5, 255), nanovgo.RGBA(255, 255, 255, 255))
ctx.SetFillPaint(paint)
ctx.Fill()
paint = nanovgo.LinearGradient((r+ax)*0.5, (0+ay)*0.5, bx, by, nanovgo.RGBA(0, 0, 0, 0), nanovgo.RGBA(0, 0, 0, 255))
ctx.SetFillPaint(paint)
ctx.Fill()
ctx.SetStrokeColor(nanovgo.RGBA(0, 0, 0, 64))
ctx.Stroke()
// Select circle on triangle
ax = cosF(120.0/180.0*nanovgo.PI) * r * 0.3
ay = sinF(120.0/180.0*nanovgo.PI) * r * 0.4
ctx.SetStrokeWidth(2.0)
ctx.BeginPath()
ctx.Circle(ax, ay, 5)
ctx.SetStrokeColor(nanovgo.RGBA(255, 255, 255, 192))
ctx.Stroke()
paint = nanovgo.RadialGradient(ax, ay, 7, 9, nanovgo.RGBA(0, 0, 0, 64), nanovgo.RGBA(0, 0, 0, 0))
ctx.BeginPath()
ctx.Rect(ax-20, ay-20, 40, 40)
ctx.Circle(ax, ay, 7)
ctx.PathWinding(nanovgo.Hole)
ctx.SetFillPaint(paint)
ctx.Fill()
}