android中,如何用canvas绘制透明?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android中,如何用canvas绘制透明?相关的知识,希望对你有一定的参考价值。

我用canvas绘制了一些东西,现在想把这些东西擦除,让它恢复到透明状态。请问,应该如何进行。我尝试过用透明色重新绘制整个canvas,但不起效果。

第一种思路是通过对Bitmap进行操作,将Bitmap的像素值get到一个int[]数组里,因为在android里Bitmap通常是ARGB8888格式,所以最高位就是A通道的值,对齐进行改变后再新建一个Bitmap即可。
第二种思路是通过设置canvas的paint的透明度,然后通过canvas.drawBitmap()来改变View的透明度。
Paint .setAlpha(0);
参考技术A Bitmap buffer = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_4444);buffer.eraseColor(Color.TRANSPARENT);然后用canvas画这个buffer看看 参考技术B 重新绘制一遍背景啊

android 画布区域,android:canvas绘制一个透明矩形并填充其余区域

我为那些需要它的人共享一个代码,用于为相机绘制SurfaceView的代码,由透明背景上的透明矩形和可选的alpha组成。

欢迎大家有更好的贡献:)

@Override

protected void onDraw(Canvas canvas) {

mAGPLog.e(this.getClass().getName() + " - onDraw");

canvas.drawColor(Color.argb(128, 224, 224, 224));

int margin = (int) getResources().getDimension(R.dimen.margin_camera);

int width = getWidth();

int height = getHeight();

mAGPLog.e("width - " + width + " * height - " + height);

int distance = width < height ? width - margin : height - margin;

paint.setColor(Color.CYAN);

paint.setStrokeWidth(strokerWidth);

paint.setStyle(Paint.Style.STROKE);

canvas.drawRect(

(width - distance) / 2, (height - distance) / 2, (width + distance) / 2, (height + distance) / 2, paint);

paint.setStyle(Paint.Style.FILL);

paint.setColor(Color.argb(0, 255, 255, 255));

paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));

canvas.drawRect(

(width - distance) / 2 + strokerWidth, (height - distance) / 2 + strokerWidth, (width + distance) / 2 - strokerWidth, (height + distance) / 2 - strokerWidth, paint);

super.onDraw(canvas);

}

f54o9.jpg

以上是关于android中,如何用canvas绘制透明?的主要内容,如果未能解决你的问题,请参考以下文章

如何用android 画出三角形

如何用android 画出三角形

Canvas如何用Canvas绘制图片

如何用tablea7绘制canvas

图形基础篇02 # 指令式绘图系统:如何用Canvas绘制层次关系图?

Canvas如何用Canvas绘制折线图