将图像设置为画布背景并使用用户的绘图进行保存

时间:2011-10-07 03:20:45

标签: android canvas drawing paint

我正在使用下面的代码。我的应用程序能够在画布上绘制并保存它。

但我想要做的是将图像作为画布的背景,所以当我保存它时,它看起来就像是一个用户绘图的图像。

非常感谢您的帮助! :)

@Override
public void run() {
    Canvas canvas = null;
    while (_run){
        if(isDrawing == true){
            try{
                canvas = mSurfaceHolder.lockCanvas(null);
                if(mBitmap == null){
                    mBitmap =  Bitmap.createBitmap (1, 1, Bitmap.Config.ARGB_8888);
                }
                final Canvas c = new Canvas (mBitmap);

                c.drawColor(0, PorterDuff.Mode.CLEAR);
                canvas.drawColor(0, PorterDuff.Mode.CLEAR);
                canvas.drawColor(0xffffffff);

                commandManager.executeAll(c,previewDoneHandler);
                previewPath.draw(c);

                canvas.drawBitmap (mBitmap, 0,  0,null);
            } finally {
                mSurfaceHolder.unlockCanvasAndPost(canvas);
            }


        }

    }

}

2 个答案:

答案 0 :(得分:2)

尝试这个东西,

这将返回Bitmap Merged two Bitmap Images SDCard,同时保存在public Bitmap combineImages(Bitmap c, Bitmap s) { Bitmap cs = null; int width, height = 0; if (c.getWidth() > s.getWidth()) { width = c.getWidth(); height = c.getHeight(); } else { width = s.getWidth() + s.getWidth(); height = c.getHeight(); } cs = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas comboImage = new Canvas(cs); comboImage.drawBitmap(c, 0, 0, null); comboImage.drawBitmap(s, 100, 300, null); /****** * * Write file to SDCard * * ****/ String tmpImg = String.valueOf(System.currentTimeMillis()) + ".png"; OutputStream os = null; try { os = new FileOutputStream(Environment.getExternalStorageDirectory() + "/"+tmpImg); cs.compress(CompressFormat.PNG, 100, os); } catch (IOException e) { Log.e("combineImages", "problem combining images", e); } return cs; }

{{1}}

答案 1 :(得分:0)

对于您正在创建的任何视图,您可以创建当前显示的位图。 使用方法:

view.setDrawingCacheEnabled(true);
Bitmap bitmap=view.getDrawingCache();

这有助于您实现自己想要的目标吗? *完成后务必回收这些位图。

bitmap.recycle();