每次使用此代码时都不会绘制任何内容。我需要在指定的矩形内绘制一个位图。
canvas.drawBitmap(MyBitmap, null, rectangle, null)
我看过网上但找不到多少帮助。
答案 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时要记住的主要项目是:
矩形在屏幕坐标中(正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);
感谢:)