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

时间:2012-03-13 20:54:16

标签: android graphics bitmap android-canvas

每次使用此代码时都不会绘制任何内容。我需要在指定的矩形内绘制一个位图。

canvas.drawBitmap(MyBitmap, null, rectangle, null)

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

3 个答案:

答案 0 :(得分:30)

编辑


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

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

drawBitmap(bitmap, srcRect, destRect, paint)  不处理Z ordering (depth)以及在对象上调用绘制的顺序。

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


您未指定任何来源,因此未绘制任何内容。

示例:

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

canvas.drawBitmap(MyBitmap, new Rect(0,0,100,100), rectangle, null);

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

canvas.drawBitmap(MyBitmap, new Rect(0,0,50,100), rectangle, null);

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

答案 1 :(得分:23)

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

  • 左<对 top<底

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

我发现想到Rect参数

很有帮助
(left, top, right, bottom)

作为

(X, Y, X + Width, Y + Height)

其中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 );

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

答案 2 :(得分:1)

我不知道为什么但这对我有用!

Rect rectangle = new Rect(0,0,100,100);
canvas.drawBitmap(bitmap, null, rectangle, null);

感谢:)