无法获取 android.graphics。要旋转的图片对象,但可以平移。以下代码不涉及摄像头。
为了制作动态精灵,将绘图图元记录到 android.graphics 中。供以后使用的图片对象似乎始终比在 onDraw 期间进行单独的图元绘制更有效。并且 Picture 对象与位图非常相似(如果不一样?)并且可以保存和恢复到位图/从位图恢复。
但是,为了能够旋转这些图片,我想避免在recording() 之后将它们保存为位图。也就是说,只需使用像位图这样的图片对象,canvas api 似乎暗示这是可能的。也许图片 API 不那么复杂,但更有可能我只是做错了。
位图与图片的画布 API 不是并行的,例如:
canvas.drawBitmap(bitmap_Sprite, matrix, null); // Draw sprite with matrix, no Paint
还有一个:
canvas.drawPicture(picture_Sprite, destination_rectangle); Draw sprite into rect.
但是没有:
canvas.drawPicture(picture_Sprite, matrix ...)
- 详情:
想象一下 bitmap_Sprite 和 picture_Sprite 都是一个“指南针箭头”,指示它在旋转过程中指向的位置。
在 onDraw() 调用中,使用位图版本,这有效:
matrix = new matrix();
matrix.setRotate(angle); // angle is ++ during onDraw(canvas)
// Draw arrow, matrix rotates it as expected:
canvas.drawBitmap(bitmap_Sprite, matrix, null); // null = no Paint obj
但是尝试使用图片对象做同样的事情,我能弄清楚的唯一方法是像这样旋转destination_rectangle(包含箭头):
//destination_rectangle sized correctly to wrap previously recorded picture obj.
matrix2 = new matrix();
matrix2.setRotate(angle); // angle is ++ during onDraw(canvas)
matrix2.mapRect(destination_rectangle); // apply rotation
canvas.drawPicture(picture_Sprite, destination_rectangle);
但这所做的只是围绕一个位置旋转矩形,它不会旋转矩形(和箭头)本身。
- 问题:
- 正在使用目标矩形。这样做的错误方法?
- 甚至可以使用图片对象进行旋转吗?
当然,如果我不能让图片对象旋转,那么我可以直接使用以前创建的位图/mipmaps。那么那么
- 一般来说,假设可以像使用位图一样使用图片对象,我是否真的可以使用动态创建一次的图片来节省开销,而不是动态创建它们,将它们保存为位图,然后重新加载位图来做矩阵的东西?(! )