我将一个AS3(Flash)应用程序移植到Java Android。我需要一个同等功能的这个原型: copyPixels(sourceBitmapData:的BitmapData,sourceRect:矩形,destPoint:点,alphaBitmapData:的BitmapData = NULL,alphaPoint:点= NULL,mergeAlpha:布尔= FALSE):无效Java位图合成如何
的重要的参数是SourceBitmap,SourceRect,DestPoint和MergeAlpha,我不需要其他参数。现在我正在使用Java中的Bitmap类,是否有可能通过Bitmap类来实现这样的功能,该功能可以快速克服Android Java糟糕的性能?
也许我应该使用BufferedImage或其他东西,但我迷路了,因为Java有很多图像/位图任何类执行类似的职责,而AS3只有2。我还没有找到一些代码,做我想做的而无需诉诸某种形式的Canvas类,我想避免因为Java Android的性能问题。在Bitmap类中有CopyPixels函数,但是根据我的理解,它不能合成Alpha值。我确信有一些代码可以做我所做的事情,并希望我不必重新发明轮子。
感谢您的回答/评论。
我已经在使用android.graphics.Bitmap – user1169933
我当然相信Canvas比OpenGl快,但使用Canvas作为占位符来合成图形很慢。这是因为您需要将位图复制到画布,然后再将它们复制回位图。如果可能,将位图复制到具有alpha合成的位图(使用缓冲区而不是单个像素)将是最佳解决方案。性能问题是帧速慢,Java GC不工作时挂起,屏幕上闪烁等等......当你推入大量像素时,C++所没有的问题类型。感谢您的评论,了解Canvas并不是瓶颈。 – user1169933
你其实不需要复制很多东西。使用带有位图的Canvas构造函数,或者调用SetBitmap()。这些不应复制位图。它应该只改变位图像素。你是什么意思关于复制位图? GC为什么要花太长时间?你是否在每一帧创建和回收位图? – Samuel