gpt4 book ai didi

java - 使用 alpha 透明度从 0 到 1 绘制透明渐变

转载 作者:太空宇宙 更新时间:2023-11-03 12:10:06 24 4
gpt4 key购买 nike

我在 Android 中有一个动态生成的位图,我想从顶部边缘开始羽化,这样边框区域在顶部将完全透明,并逐渐变为完全不透明的下方。

创建一个均匀完全透明的上边缘

transparentPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
transparentPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OUT));
Shader shader = new LinearGradient(0, 0, 0, 20,
Color.TRANSPARENT, Color.TRANSPARENT, Shader.TileMode.CLAMP);
transparentPaint.setShader(shader);
// the bitmap is dynamically generated beforehand
Canvas c = new Canvas(bitmap);
c.drawRect(0, 0, bitmapWidth, 20, transparentPaint);

Alpha 渐变而不是全透明孔?

你会如何实现这样的目标:

enter image description here

[在这种情况下只是上边缘]

最佳答案

看看这个例子:Make certain area of bitmap transparent on touch

这是一种使用渐变绘画的方法:

Paint framePaint = new Paint();
for(int i = 1; i < 5; i++){
setFramePaint(framePaint, i, imageW, imageH);
myCanvas.drawPaint(framePaint);
}

...

private void setFramePaint(Paint p, int side, float iw, float ih){
// paint, side of rect, image width, image height

p.setShader(null);
p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));

float borderSize = 0.1f; //relative size of border
//use the smaller image size to calculate the actual border size
float bSize = (iw > ih)? ih * borderSize: ih * borderSize;
float g1x = 0;
float g1y = 0;
float g2x = 0;
float g2y = 0;
int c1 = 0, c2 = 0;

if (side == 1){
//left
g1x = 0;
g1y = ih/2;
g2x = bSize;
g2y = ih/2;
c1 = Color.TRANSPARENT;
c2 = Color.BLACK;

}else if(side == 2){
//top
g1x = iw/2;
g1y = 0;
g2x = iw/2;
g2y = bSize;
c1 = Color.TRANSPARENT;
c2 = Color.BLACK;


}else if(side == 3){
//right
g1x = iw;
g1y = ih/2;
g2x = iw - bSize;
g2y = ih/2;
c1 = Color.TRANSPARENT;
c2 = Color.BLACK;


}else if(side == 4){
//bottom
g1x = iw/2;
g1y = ih;
g2x = iw/2;
g2y = ih - bSize;
c1 = Color.TRANSPARENT;
c2 = Color.BLACK;
}

p.setShader(new LinearGradient(g1x, g1y, g2x, g2y, c1, c2, Shader.TileMode.CLAMP));

}

关于java - 使用 alpha 透明度从 0 到 1 绘制透明渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14172085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com