Android中如何绘制bitmap?
巴扎黑
巴扎黑 2017-04-17 17:41:55
0
2
462
MaskBitmap = Bitmap.createBitmap(width,height, Bitmap.Config.ARGB_8888);
        MaskCanvas = new Canvas(MaskBitmap);
        Rect rect = new Rect(0,0,width,height);
        MaskCanvas.drawRect(rect,MaskPaint);

这个时候的并没有显示需要draw的图像,需要

@Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawBitmap(MaskBitmap,0,0,MaskPaint);
    }

请问一下为什么第一次drawrect的时候为什么不显示图层。刚刚开始学习自定义view,希望可以解释一下。

巴扎黑
巴扎黑

membalas semua(2)
黄舟

CanvasBiasanya terjemahan adalah kanvas. Apakah itu kanvas? Ia adalah sesuatu yang digunakan untuk melukis gambar.

Tetapi ini tidak bermakna selagi anda melukis di atas kanvas, ia akan dipaparkan pada skrin.

Mungkin terdapat banyak kanvas baharu dalam program, tetapi apa yang dipaparkan pada skrin ialah kanvas yang ditetapkan Anda hanya boleh melihat sesuatu dengan melukisnya pada kanvas ini.

Apa yang diluluskan dalam

onDraw(Canvas canvas) ialah kanvas yang digunakan untuk paparan skrin Hanya apabila anda melukis sesuatu pada kanvas ini boleh ia dipaparkan. Bagi kanvas baharu anda sendiri, anda boleh melukis sesuatu di atasnya, tetapi ia tidak akan dipaparkan.

Ty80

Jawapan @Youming betul, sedikit tambahan
Apabila anda melukis buat kali pertama, anda sebenarnya melukis segi empat tepat ke dalam MaskBitmap, tetapi peta bit tidak dipaparkan pada skrin, jadi segi empat tepat yang dilukis tidak akan dipaparkan dengan kata lain, jika anda menetapkan ini MaskBitmap kepada ImageView, ia akan dipaparkan, tetapi prinsipnya di sini juga dalam ImageView.onDraw() Di dalam, lukis Peta Bit ini pada kanvas skrin.

Jika anda telah menetapkan MaskBitmap kepada ImageView, dan kemudian lukis segi empat tepat ke dalam MaskBitmap, maka anda masih perlu memanggil ImageView.invalidate() untuk mencetuskan lukis semula bagi memaparkan segi empat tepat.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan