2015-02-23 23 views
0

我有这样的代码:保存在Android的画布不起作用每次

public void saveimage() { 
    Bitmap bitmap = Bitmap.createBitmap(colorGFX.getWidth(), 
      colorGFX.getHeight(), Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(bitmap); 
    canvas.drawColor(Color.WHITE); 
    canvas = colorGFX.canvas; 
    canvas.setBitmap(bitmap); 
    saveBitmap(bitmap); 
} 

colorGFX对象延伸SurfaceView。

saveBitmap实际上是将图像写入文件。

问题是,大部分时间是白色图像被保存,其他时间正确的图像被保存。

我错过了什么,或者为什么图像只能保存1/5的时间?

+0

如果更换3线帆布帆布=新的Canvas(位图); canvas.drawColor(Color.WHITE); canvas = colorGFX.canvas;只有1行:Canvas canvas = colorGFX.canvas;怎么了? – 2015-02-23 19:47:09

+0

然后保存一个空的(黑色)图像。 – CristianG 2015-02-23 21:21:35

+0

如果你添加colorGFX.invalidate();就在canvas.setBitmap(bitmap)之前;你得到了什么? – 2015-02-23 22:35:09

回答

1

这为我工作:

Bitmap bitmap = Bitmap.createBitmap(colorGFX.getWidth(), 
      colorGFX.getHeight(), Bitmap.Config.ARGB_8888); 
Canvas canvas = new Canvas(bitmap); 
canvas.drawColor(Color.WHITE); 
canvas.drawBitmap(colorGFX.bitmap, 0f, 0f, null); 
canvas.drawBitmap(colorGFX.pictureBitmap, 0f, 0f, null); 
saveBitmap(bitmap); 
+0

谢谢!它确实有效。 – CristianG 2015-03-14 17:27:52

0

试试这个:

public void saveimage() { 
    Bitmap bitmap = Bitmap.createBitmap(colorGFX.getWidth(), 
      colorGFX.getHeight(), Bitmap.Config.ARGB_8888); 
    colorGFX.draw(new Canvas(bitmap)) 
    saveBitmap(bitmap); 
} 
+0

保存相同的空白图像(黑色)。 – CristianG 2015-02-24 19:10:51

+0

在这种情况下,您需要检查colorGFX对象/视图。你如何使用它?它是如何摆放的?你能提供colorGFX的代码源吗? – 2015-02-24 20:35:09

+0

这里是ccolorGFX类:http://pastebin.com/30zZNkAz – CristianG 2015-02-24 21:07:40