为什么图像上的油漆会变慢?

Shr*_*jan 1 android paint android-layout android-canvas

在我的Android绘图应用程序中,我将在画布上绘画.但有些时候我在画之前就有了Image.那时我的油漆变慢了.问题出在哪儿 ??

仅在Canvas上绘制的代码:

@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);

    }
Run Code Online (Sandbox Code Playgroud)

将图像作为背景的代码是:

 @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);

    }
Run Code Online (Sandbox Code Playgroud)

现在我不知道为什么我的油漆变得很慢,而我在画布上画画,如果有图像作为背景.请帮帮我.谢谢.

Awa*_*riq 5

您的应用程序可能因此行而变慢Bitmap tempBitmap = BitmapFactory.decodeFile(imagePath); 在你的onDraw函数中.如果你要在每个实例上更改位图,那么你应该在onDraw之外声明它,只需为它分配新的Bitmap,如果你没有更改它,那么只需在开始时和onDraw初始化并分配对象,只需在画布中绘制它.