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

waxmsbnn  于 2023-03-28  发布在  Android
关注(0)|答案(3)|浏览(114)

我需要在一个指定的矩形内画一个位图。为什么没有画出来?

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

b1uwtaje1#

编辑

原始答案不正确。您可以使用sourceRect指定要绘制的Bitmap的一部分。它可能为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到位图的宽度,高度的任何矩形。

vpfxa7rd

vpfxa7rd2#

定义矩形时要记住的主要事项是:

左〈右*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。

egdjgwm8

egdjgwm83#

这对我很有效!

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

相关问题