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
,希望可以解释一下。
Canvas
通常、翻訳はキャンバスです。キャンバスとは絵を描くためのものです。しかし、キャンバスに描いたらそのまま画面に表示されるわけではありません。
プログラムには新しいキャンバスがたくさんありますが、画面に表示されるのは指定されたキャンバスであり、このキャンバスに描画することによってのみ表示されます。
onDraw(Canvas canvas)
に渡されるのは画面表示に使用されるキャンバスで、このキャンバス上に何かを描画する場合にのみ表示されます。自分の新しいキャンバスについては、描画することはできますが、表示されません。@Youming の答えは正しいです。少し追加します。
初めて描画するとき、実際に 長方形を
MaskBitmap
に描画しますが、ビットマップは画面に表示されません。つまり、このMaskBitmap
をImageView
に設定すると、描画された四角形は表示されます。 ただし、ここでの原則はImageView.onDraw()
画面内にビットマップを描画することです。キャンバスオン。を
MaskBitmap
に設定し、四角形をImageView
に描画した場合でも、MaskBitmap
を呼び出して再描画をトリガーして四角形を表示する必要があります。ImageView.invalidate()