Как настроить изображение для отображения за текущим холстом? - PullRequest
0 голосов
/ 03 ноября 2011

Я использую холст, чтобы нарисовать другой цвет.Я хочу установить изображение, которое должно отображаться в качестве фона холста.И пока я рисую это изображение, оно должно быть нарисовано на изображении, а не позади изображения.Прямо сейчас с кодом ниже он рисует за изображением.

 @Override
    public void run() {
        Canvas canvas = null;
        while (_run){
            try{
                canvas = mSurfaceHolder.lockCanvas(null);

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

                commandManager.executeAll(canvas);
            } finally {
                Bitmap kangoo = BitmapFactory.decodeResource(getResources(),R.drawable.icon);
                canvas.drawBitmap(kangoo, 130, 100, null);

                mSurfaceHolder.unlockCanvasAndPost(canvas);
            }
        }

    }

Так что мне нужно сделать, чтобы нарисовать изображение ???

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Когда вы перерисовываете холст в цикле While (1), вы можете поместить оператор canvas.drawBitmap(kangoo, 130, 100, null) вверху цикла, чтобы он снова и снова рисовался, а затем рисовал поверх него.

Если вы хотите сохранить нарисованную часть, вам нужно сделать что-то вроде преобразования Canvas в растровое изображение, например:

Bitmap  bitmapToBeDrawnFromNextTime = Bitmap.createBitmap( canvas.getWidth(), canvas.getHeight(), Bitmap.Config.ARGB_8888);
Canvas imageCanvas = new Canvas(bitmapToBeDrawnFromNextTime);
imageCanvas.draw(canvas);
0 голосов
/ 03 ноября 2011

Никто не дал мне ответа.Но у меня есть решение, я должен установить изображение после очистки холста.

код:

 @Override
    public void run() {
        //Canvas canvas = null;
        while (_run){


            try{
                canvas = mSurfaceHolder.lockCanvas(null);

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

                Bitmap kangoo = BitmapFactory.decodeResource(getResources(),R.drawable.icon);
                canvas.drawBitmap(kangoo, 130, 100, null);
                commandManager.executeAll(canvas);

            } finally {

                mSurfaceHolder.unlockCanvasAndPost(canvas);
            }
        }
...