我需要在一个指定的矩形内画一个位图。为什么没有画出来?
canvas.drawBitmap(MyBitmap, null, rectangle, null)
b1uwtaje1#
编辑
原始答案不正确。您可以使用sourceRect指定要绘制的Bitmap的一部分。它可能为null,在这种情况下将使用整个图像。根据他在某个东西下面画的油炸锅评论,我会在上面加一条注解。drawBitmap(bitmap, srcRect, destRect, paint)不处理Z ordering (depth),调用对象上的绘制的顺序很重要。如果你有3个形状要画,正方形,三角形和圆形。如果你想让正方形在上面,那么它必须最后画。你没有指定任何源,所以它没有绘制任何东西。示例:您有一个100x100像素的位图。您想绘制整个位图。
drawBitmap(bitmap, srcRect, destRect, paint)
ordering (depth)
canvas.drawBitmap(MyBitmap, new Rect(0,0,100,100), rectangle, null);
您希望只绘制位图的左半部分。
canvas.drawBitmap(MyBitmap, new Rect(0,0,50,100), rectangle, null);
您需要指定源矩形,源矩形可以是从0,0到位图的宽度,高度的任何矩形。
vpfxa7rd2#
定义矩形时要记住的主要事项是:
左〈右且*top < bottom**
top < bottom
矩形是屏幕坐标(正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)并缩放它以适合dstForRender ...中的大小和位置,并使用默认的Paint。
egdjgwm83#
这对我很有效!
Rect rectangle = new Rect(0,0,100,100); canvas.drawBitmap(bitmap, null, rectangle, null);
3条答案
按热度按时间b1uwtaje1#
编辑
原始答案不正确。您可以使用sourceRect指定要绘制的Bitmap的一部分。它可能为null,在这种情况下将使用整个图像。
根据他在某个东西下面画的油炸锅评论,我会在上面加一条注解。
drawBitmap(bitmap, srcRect, destRect, paint)
不处理Zordering (depth)
,调用对象上的绘制的顺序很重要。如果你有3个形状要画,正方形,三角形和圆形。如果你想让正方形在上面,那么它必须最后画。
你没有指定任何源,所以它没有绘制任何东西。
示例:
您有一个100x100像素的位图。您想绘制整个位图。
您希望只绘制位图的左半部分。
您需要指定源矩形,源矩形可以是从0,0到位图的宽度,高度的任何矩形。
vpfxa7rd2#
定义矩形时要记住的主要事项是:
左〈右且*
top < bottom
**矩形是屏幕坐标(正Y向下)...
我发现思考一下Rect的论点很有帮助
作为
其中X,Y是子画面图像的左上角。
注意:如果想要在一个特定的位置居中的图像,请记住偏移这些值的一半的精灵宽度和高度.例如:
这将使用整个原始图像(因为src rect为null)并缩放它以适合dstForRender ...中的大小和位置,并使用默认的Paint。
egdjgwm83#
这对我很有效!