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

时间:2011-12-02 04:22:06

标签: android android-layout android-canvas paint

在我的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);

    }

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

 @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 个答案:

答案 0 :(得分:5)

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