0

无法获取 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。那么那么

  • 一般来说,假设可以像使用位图一样使用图片对象,我是否真的可以使用动态创建一次的图片来节省开销,而不是动态创建它们,将它们保存为位图,然后重新加载位图来做矩阵的东西?(! )
4

1 回答 1

1

只需使用 Canvas.concat,您可能还需要保存/恢复

于 2013-10-18T16:51:24.840 回答