Почему краска на изображении становится медленной? - PullRequest
1 голос
/ 02 декабря 2011

В моем приложении для рисования на Android я собираюсь рисовать на холсте. Но иногда у меня есть изображение до этой краски. В то время моя краска стала медленной. Где проблема ??

Код, который рисует только на холсте:

@Override
    protected void onDraw(Canvas canvas) {

        //canvas.drawColor(0, PorterDuff.Mode.CLEAR);
        // set the Canvas Color
        canvas.drawColor(canvasColor); // edited

        canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint); 

        canvas.drawPath(mPath, mPaint);

    }

А код, который получает изображение в качестве фона:

 @Override
    protected void onDraw(Canvas canvas) {

        //canvas.drawColor(0, PorterDuff.Mode.CLEAR);
        // set the Canvas Color
        canvas.drawColor(canvasColor); // edited

        if(!(imagePath==null))
        {
            Bitmap tempBitmap = BitmapFactory.decodeFile(imagePath); // from the gallery
            photoBitmap = Bitmap.createScaledBitmap(tempBitmap, display.getWidth(), display.getHeight(), true);
        }
        if(!(imagePath==null))
        {
            canvas.drawBitmap (photoBitmap,0,  0, null);
        }


        canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint); 
     canvas.drawPath(mPath, mPaint);

    }

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

1 Ответ

5 голосов
/ 02 декабря 2011

Ваше приложение может работать медленно из-за этой строки Bitmap tempBitmap = BitmapFactory.decodeFile (imagePath); в функции onDraw. Если вы меняете растровые изображения в каждом экземпляре, вам следует объявить его вне onDraw, просто назначив ему новое растровое изображение, а если вы его не измените, просто инициализировать и назначить объекту при запуске, а в onDraw просто нарисовать его на холсте.

...