Android中如何绘制bitmap?
巴扎黑
巴扎黑 2017-04-17 17:41:55
0
2
460
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,希望可以解释一下。

巴扎黑
巴扎黑

모든 응답(2)
黄舟

Canvas보통 번역은 캔버스입니다. 캔버스란 그림을 그리는 데 사용되는 것입니다.

그러나 캔버스에 그림을 그린다고 해서 화면에 나타나는 것은 아닙니다.

프로그램에는 새로운 캔버스가 많이 있을 수 있지만 화면에 표시되는 것은 지정된 캔버스입니다. 이 캔버스에 그려야만 사물을 볼 수 있습니다.

onDraw(Canvas canvas)에 전달되는 것은 화면 표시에 사용되는 캔버스입니다. 이 캔버스에 무언가를 그려야 표시됩니다. 자신만의 새 캔버스에 그림을 그릴 수는 있지만 표시되지는 않습니다.

Ty80

@Youming 님의 답변이 맞습니다. 약간의 추가
처음 그릴 때 MaskBitmap에 직사각형을 그리는데 비트맵이 화면에 표시되지 않습니다. 즉, MaskBitmapImageView로 설정하면 표시되지만 여기서는 ImageView.onDraw()화면 안에 비트맵을 그리는 것이 원칙입니다. 캔버스켜짐.

MaskBitmap으로 설정한 다음 ImageView에 직사각형을 그린 경우에도 MaskBitmap를 호출하여 다시 그리기를 트리거하여 직사각형을 표시해야 합니다.ImageView.invalidate()

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿