Android – 绘制将位图旋转到画布上的特定位置

前端之家收集整理的这篇文章主要介绍了Android – 绘制将位图旋转到画布上的特定位置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
好吧也许我在这里遗漏了一些东西,但我被困了好几个小时.我创建了一个应用程序,用户图片上绘制尺寸线.现在我想绘制一些选择点,表明该行已被选中.这些点是一个特定的位图,必须位于该行的末尾(箭头后)并根据箭头旋转.我创建了一个扩展View的类DrawSelectionPoint,我可以使用以下内容旋转位图:
selectionPoint = BitmapFactory.decodeResource(context.getResources(),R.drawable.selectionpoint);
Matrix matrix = new Matrix();
        matrix.postRotate((float)Math.toDegrees(angle));        
canvas.drawBitmap(selectionPoint,matrix,null);

(其中angle是直线的角度)这样我的位图按照我想要的方式旋转,但是它绘制在点0,0(屏幕的左上角).

如果我使用类似的东西

canvas.save();

canvas.rotate();

canvas.drawBitmap(selectionPoint,x,y,null);

canvas.restore();

然后我发现在我想要的确切位置绘制位图太难了(因为我在旋转的画布上绘制,然后我将其旋转回来).我尝试了一些欧几里德旋转变换,但我没有运气.

有没有办法应用矩阵旋转,并给出我需要绘制位图的点?先感谢您!

解决方法

假设您要绘制位图中心位于(px,py)画布坐标的位图.有一个成员变量
Matrix matrix = new Matrix();

并在你的onDraw:

matrix.reset();
matrix.postTranslate(-bitmap.getWidth() / 2,-bitmap.getHeight() / 2); // Centers image
matrix.postRotate(angle);
matrix.postTranslate(px,py);
canvas.drawBitmap(bitmap,null);
原文链接:https://www.f2er.com/android/314124.html

猜你在找的Android相关文章