使用方法-canvas.drawBitmap(bitmap,src,dst,paint)

Koh*_*yer 23 graphics android bitmap android-canvas

每次我使用这个代码都没有画出来.我需要在指定的矩形内绘制一个位图.

canvas.drawBitmap(MyBitmap, null, rectangle, null)
Run Code Online (Sandbox Code Playgroud)

我看过网上但找不到多少帮助.

tri*_*ggs 35

编辑


原来的答案是不正确的.您可以使用sourceRect指定要绘制的位图的一部分.它可以为null,在这种情况下将使用整个图像.

根据油炸锅的评论,他正在画一些东西,我会在上面添加一个注释.

drawBitmap(bitmap, srcRect, destRect, paint) 不处理Z ordering (depth)和对象的调用顺序.

如果要绘制3个形状,正方形,三角形和圆形.如果你想让方块在顶部,那么它必须最后绘制.


你没有指定任何来源,所以没有任何来源.

例:

你有一个100x100像素的位图.您想绘制整个位图.

canvas.drawBitmap(MyBitmap, new Rect(0,0,100,100), rectangle, null);
Run Code Online (Sandbox Code Playgroud)

您只想绘制位图的左半部分.

canvas.drawBitmap(MyBitmap, new Rect(0,0,50,100), rectangle, null);
Run Code Online (Sandbox Code Playgroud)

你需要指定源矩形,源矩形可以是一个矩形,从0,0到宽度,位图的高度.

  • src - 可能为null.要绘制的位图的子集---- dst - 位图将被缩放/转换为适合的矩形--------我尝试了你所说的,但它仍然没有出现由于某种原因. ... (2认同)

Dev*_*ght 23

定义Rect时要记住的主要项目是:

  • 左<右上<下

矩形在屏幕坐标中(正Y向下)...

我发现想到Rect参数很有帮助

(left, top, right, bottom)
Run Code Online (Sandbox Code Playgroud)

(X, Y, X + Width, Y + Height)
Run Code Online (Sandbox Code Playgroud)

其中X,Y是精灵图像的左上角.

注意:如果想要将图像置于特定位置的中心,请记住将这些值偏移精灵宽度和高度的一半.例如:

int halfWidth = Width/2;
int halfHeight = Height/2
Rect dstRectForRender = new Rect( X - halfWidth, Y - halfHeight, X + halfWidth, Y + halfHeight );
canvas.drawBitmap ( someBitmap, null, dstRectForRender, null );
Run Code Online (Sandbox Code Playgroud)

这使用整个原始图像(因为src rect为null)并将其缩放以适合dstRectForRender的大小和位置......并使用默认的Paint.