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

巴扎黑
巴扎黑

répondre à tous(2)
黄舟

CanvasHabituellement, la traduction est la toile. Qu'est-ce qu'une toile ? C'est un objet utilisé pour dessiner des images.

Mais cela ne veut pas dire que tant que vous dessinez sur la toile, cela sera affiché à l'écran.

Il peut y avoir de nombreuses nouvelles toiles dans le programme, mais ce qui est affiché à l'écran est une toile désignée. Vous ne pouvez voir les choses qu'en les dessinant sur cette toile.

Ce qui est transmis dans

onDraw(Canvas canvas) est le canevas utilisé pour l'affichage à l'écran. Ce n'est que lorsque vous dessinez quelque chose sur ce canevas qu'il peut être affiché. Quant à votre propre nouvelle toile, vous pouvez y dessiner des éléments, mais elle ne sera pas affichée.

Ty80

La réponse de @Youming est correcte, un petit ajout
Lorsque vous dessinez pour la première fois, vous dessinez en fait le rectangle dans MaskBitmap, mais le bitmap ne s'affiche pas à l'écran, donc le rectangle dessiné ne sera pas affiché. Autrement dit, si vous définissez ce MaskBitmap sur un ImageView, il sera affiché, mais le principe ici est aussi dans ImageView.onDraw(). À l’intérieur, dessinez ce Bitmap sur la toile d’écran.

Si vous avez défini MaskBitmap sur ImageView, puis dessinez le rectangle dans MaskBitmap, vous devez toujours appeler ImageView.invalidate() pour déclencher le redessin afin d'afficher le rectangle.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal