无法获取android.graphics。 图片 对象旋转,但翻译是可以的。以下代码中没有摄像头。
为了制作动态精灵,将记录绘图原语转换为android.graphics。 图片 对象供以后使用似乎始终比单个用户更有效在onDraw期间绘制原始图形。 Picture对象与位图非常相似(如果不相同?),可以保存并从位图恢复。
然而,为了能够旋转这些图片,我想避免在录制()之后将它们保存为位图。也就是说,只需使用像bitmaps这样的Picture对象, canvas api似乎意味着可能。也许Picture API不太复杂,但更有可能我只是做错了。
Bitmaps与图片的画布API不是平行的,例如有一个:
canvas.drawBitmap(bitmap_Sprite, matrix, null); // Draw sprite with matrix, no Paint
还有一个:
canvas.drawPicture(picture_Sprite, destination_rectangle); Draw sprite into rect.
但 不是 a:
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);
但所有这一切都是 pivot 围绕某个位置的矩形,它不会旋转矩形(和箭头)本身。
当然,如果我无法让Picture对象旋转,那么我可以直接使用以前创建的位图/ mipmaps。那么
答案 0 :(得分:1)
只需使用Canvas.concat,您可能也需要保存/恢复