搜索

首页  >  问答  >  正文

Android中如何绘制bitmap?

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,希望可以解释一下。

巴扎黑巴扎黑2772 天前450

全部回复(2)我来回复

  • 黄舟

    黄舟2017-04-17 17:43:55

    Canvas通常翻译就是画布。什么是画布,就是用来画图的东西呀。Canvas通常翻译就是画布。什么是画布,就是用来画图的东西呀。

    但是并不是只要画在画布上,就会在屏幕里显示。

    程序里可能new出很多画布来,但是屏幕上显示的,是一块指定画布,你只有把东西画在这块画布上,东西才能被看到。

    onDraw(Canvas canvas)

    但是并不是只要画在画布上,就会在屏幕里显示。🎜 🎜程序里可能new出很多画布来,但是屏幕上显示的,是一块指定画布,你只有把东西画在这块画布上,东西才能被看到。🎜 🎜onDraw(Canvas canvas)里传入的就是用在屏幕显示的画布,你只有把东西画在这块画布上,才能显示出来。至于你自己new出来的画布,你可以在上面画东西,只是它不会被显示罢了。🎜

    回复
    0
  • PHP中文网

    PHP中文网2017-04-17 17:43:55

    @有明 的答案说得对, 稍作补充
    第一次draw的时候实际上是把矩形画到 MaskBitmap 中去了, 但是这个bitmap没有显示在屏幕上, 所以也不会显示出画的矩形, 也就是说如果你把这个 MaskBitmap 设置给一个 ImageView 就能显示出来了, 不过这里面的原理也是在 ImageView.onDraw() 里面把这个Bitmap画到MaskBitmap 中去了, 但是这个bitmap没有显示在屏幕上, 所以也不会显示出画的矩形, 也就是说如果你把这个 MaskBitmap 设置给一个 ImageView 就能显示出来了, 不过这里面的原理也是在 ImageView.onDraw() 里面把这个Bitmap画到屏幕画布上.

    如果你已经把 MaskBitmap 设置给了 ImageView, 然后把矩形画到 MaskBitmap 中, 那么你还需要调用 ImageView.invalidate()屏幕画布上.

    🎜如果你已经把 MaskBitmap 设置给了 ImageView, 然后把矩形画到 MaskBitmap 中, 那么你还需要调用 ImageView.invalidate() 触发重绘才能显示矩形.🎜

    回复
    0
  • 取消回复