Ste*_*ley 17
将一个位图复制到另一个位图的代码如下:
Rect src = new Rect(0, 0, 50, 50);
Rect dst = new Rect(50, 50, 200, 200);
canvas.drawBitmap(originalBitmap, src, dst, null);
Run Code Online (Sandbox Code Playgroud)
这指定您要复制位图的左上角(50x50),然后将其拉伸到150x150位图并将其从画布的左上角写入50px偏移量.
您可以通过invalidate()触发绘图,但如果您正在制作动画,我建议您使用SurfaceView.invalidate的问题是它只在线程空闲时才绘制,所以你不能在循环中使用它 - 它只会绘制最后一帧.以下是我回答过有关图形的其他问题的一些链接,它们可能有助于解释我的意思.
回应这些评论,这里有更多信息:如果你从SurfaceHolder.lockCanvas()获得Canvas,那么我认为你不能将其中的残留数据复制到Bitmap中.但这不是那种控制的目的 - 你只使用而不是当你把所有东西都分类出来并准备好画画时.
你想要做的是创建一个使用绘制到位图的画布
Canvas canvas = new Canvas(yourBitmap)
Run Code Online (Sandbox Code Playgroud)
然后,您可以执行任何转换并绘制所需的操作.yourBitmap将包含所有最新信息.然后你像这样使用表面支架:
Canvas someOtherCanvas = surfaceHolder.lockCanvas()
someOtherCanvas.drawBitmap(yourBitmap, ....)
Run Code Online (Sandbox Code Playgroud)
这样你总是得到yourBitmap,其中包含你想要保留的任何信息.
| 归档时间: |
|
| 查看次数: |
8435 次 |
| 最近记录: |