本文整理匯總了Golang中github.com/BurntSushi/xgbutil/xgraphics.Image.Bounds方法的典型用法代碼示例。如果您正苦於以下問題:Golang Image.Bounds方法的具體用法?Golang Image.Bounds怎麽用?Golang Image.Bounds使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/BurntSushi/xgbutil/xgraphics.Image
的用法示例。
在下文中一共展示了Image.Bounds方法的4個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: blendCheckered
// blendCheckered is basically a copy of xgraphics.Blend with no interfaces.
// (It's faster.) Also, it is hardcoded to blend into a checkered background.
func blendCheckered(dest *xgraphics.Image) {
dsrc := dest.Bounds()
dmnx, dmxx, dmny, dmxy := dsrc.Min.X, dsrc.Max.X, dsrc.Min.Y, dsrc.Max.Y
clr1 := xgraphics.BGRA{B: 0xff, G: 0xff, R: 0xff, A: 0xff}
clr2 := xgraphics.BGRA{B: 0xde, G: 0xdc, R: 0xdf, A: 0xff}
var dx, dy int
var bgra, clr xgraphics.BGRA
for dx = dmnx; dx < dmxx; dx++ {
for dy = dmny; dy < dmxy; dy++ {
if dx%30 >= 15 {
if dy%30 >= 15 {
clr = clr1
} else {
clr = clr2
}
} else {
if dy%30 >= 15 {
clr = clr2
} else {
clr = clr1
}
}
bgra = dest.At(dx, dy).(xgraphics.BGRA)
dest.SetBGRA(dx, dy, xgraphics.BlendBGRA(clr, bgra))
}
}
}
示例2: vpCenter
// vpCenter inspects the canvas and image geometry, and determines where the
// origin of the image should be painted into the canvas.
// If the image is bigger than the canvas, this is always (0, 0).
// If the image is the same size, then it is also (0, 0).
// If a dimension of the image is smaller than the canvas, then:
// x = (canvas_width - image_width) / 2 and
// y = (canvas_height - image_height) / 2
func vpCenter(ximg *xgraphics.Image, canWidth, canHeight int) image.Point {
xmargin, ymargin := 0, 0
if ximg.Bounds().Dx() < canWidth {
xmargin = (canWidth - ximg.Bounds().Dx()) / 2
}
if ximg.Bounds().Dy() < canHeight {
ymargin = (canHeight - ximg.Bounds().Dy()) / 2
}
return image.Point{xmargin, ymargin}
}
示例3: copyToXGraphicsImage
func copyToXGraphicsImage(xs *xgraphics.Image, buffer *image.RGBA) {
//Pix[(y-Rect.Min.Y)*Stride + (x-Rect.Min.X)*4]
xdata := xs.Pix
bdata := buffer.Pix
if xs.Bounds() == buffer.Bounds() {
copy(xdata, bdata)
} else {
xb := xs.Bounds()
bb := buffer.Bounds()
miny := xb.Min.Y
if miny < bb.Min.Y {
miny = bb.Min.Y
}
maxy := xb.Max.Y
if maxy > bb.Max.Y {
maxy = bb.Max.Y
}
xRowLen := (xb.Max.X - xb.Min.X)
bRowLen := (bb.Max.X - bb.Min.X)
rowLen := xRowLen
if bRowLen < rowLen {
rowLen = bRowLen
}
for y := miny; y < maxy; y++ {
xstart := (y-xb.Min.Y)*xs.Stride - xb.Min.X*4
bstart := (y-bb.Min.Y)*buffer.Stride - bb.Min.X*4
xrow := xdata[xstart : xstart+rowLen*4]
brow := bdata[bstart : bstart+rowLen*4]
copy(xrow, brow)
}
}
// xgraphics.Image is BGRA, not RGBA, so swap some bits
for i := 0; i < len(xdata)/4; i++ {
index := i * 4
xdata[index], xdata[index+2] = xdata[index+2], xdata[index]
}
}
示例4: paint
// paint uses the xgbutil/xgraphics package to copy the area corresponding
// to ximg in its pixmap to the window. It will also issue a clear request
// before hand to try and avoid artifacts.
func (w *Window) paint(ximg *xgraphics.Image) {
// If the image is bigger than the canvas, this is always (0, 0).
// If the image is the same size, then it is also (0, 0).
// If a dimension of the image is smaller than the canvas, then:
// x = (canvas_width - image_width) / 2 and
// y = (canvas_height - image_height) / 2
xmargin, ymargin := 0, 0
if ximg.Bounds().Dx() < w.Geom.Width() {
xmargin = (w.Geom.Width() - ximg.Bounds().Dx()) / 2
}
if ximg.Bounds().Dy() < w.Geom.Height() {
ymargin = (w.Geom.Height() - ximg.Bounds().Dy()) / 2
}
ximg.XExpPaint(w.Id, xmargin, ymargin)
}