gpt4 book ai didi

java - 如何使用 Canvas 围绕中心点旋转位图?

转载 作者:行者123 更新时间:2023-12-01 14:01:52 28 4
gpt4 key购买 nike

我有一个位图,我想创建一个通过第一个围绕其中心旋转获得的新位图。实际上我使用了这段代码,但它不起作用。

Bitmap source = ((BitmapDrawable)r.getDrawable(R.drawable.rectangle)).getBitmap();

int targetWidth = (int)(mWidth * Math.sin(rotationAngle) + mHeight * Math.cos(rotationAngle));
int targetHeight = (int)(mWidth * Math.cos(rotationAngle) + mHeight * Math.sin(rotationAngle));

Bitmap target = Bitmap.createBitmap(targetWidth, targetHeight, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(target);
Matrix m = new Matrix();
m.setRotate(rotationAngle, targetWidth/2f, targetHeight/2f);
c.drawBitmap(source, m, null);

我也尝试过这段代码,但没有帮助。

Bitmap source = ((BitmapDrawable)r.getDrawable(R.drawable.rectangle)).getBitmap();

int targetWidth = (int)(mWidth * Math.sin(rotationAngle) + mHeight * Math.cos(rotationAngle));
int targetHeight = (int)(mWidth * Math.cos(rotationAngle) + mHeight * Math.sin(rotationAngle));

Bitmap target = Bitmap.createBitmap(targetWidth, targetHeight, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(target);
c.rotate(rotationAngle, targetWidth/2f, targetHeight/2f);
c.drawBitmap(temp, 0, 0, null);

在这种情况下,在 Canvas 上调用的旋转命令(但缩放命令也会发生同样的情况)对于任何参数都将被完全忽略。我也尝试过使用:

c.drawColor(Color.BLACK)

而不是

c.drawBitmap(temp, 0, 0, null);

绘制所有 Canvas 并确认命令被忽略。

最佳答案

试试这个:

Canvas c = new Canvas(target);

c.rotate(rotationAngle, centerX, centerY);

c.drawBitmap(source, null);

希望这有帮助:)

关于java - 如何使用 Canvas 围绕中心点旋转位图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19295650/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com