gpt4 book ai didi

android - 创建具有径向渐变透明度的环

转载 作者:行者123 更新时间:2023-11-29 00:30:18 26 4
gpt4 key购买 nike

我正在通过渲染路径绘制一个地球。地球的边缘非常尖锐,我想柔化边缘以使其更具视觉吸引力。

为了提高性能,我没有去除隐藏线。我只是在计算路径上的每个点是否可见(用户正在查看的地球的一侧)并将路径绘制到最近的角落。为了隐藏这一点,我在整个 View 上绘制了一个位图,然后打了一个洞以查看地球。

为了柔化边缘,我尝试创建一个具有径向渐变透明度的环。此方法创建掩码:

 private void createMask(int width, int height, double radius) {

if(radius==0){return;}

if (mask != null) {
mask.recycle();
}

mask = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_4444);

// create a RadialGradient
RadialGradient gradient = new android.graphics.RadialGradient(
kHorizontalOffset, kVerticalOffset,
30f, 0x00FF0000, 0xFFFF0000,
android.graphics.Shader.TileMode.CLAMP);


// TODO move to init()
Paint p = new Paint();
p.setShader(gradient);
//p.setColor(0xFF000000);
p.setColor(0xFFFF0000);
p.setStrokeWidth(20f);
p.setStrokeCap(Paint.Cap.ROUND);
p.setStyle(Paint.Style.STROKE);
p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OVER));

Canvas maskCanvas = new Canvas(mask);
maskCanvas.drawColor(Color.BLACK);

final RectF rect = new RectF();
rect.set((float)(kHorizontalOffset - radius + 50), (float)(kVerticalOffset - radius + 50),
(float)(kHorizontalOffset + radius - 50), (float)(kVerticalOffset + radius - 50));

// draw transparent circle using the maskPaint
maskCanvas.drawCircle(kHorizontalOffset, this.getHeight() - kVerticalOffset, (float) radius, maskPaint);

// draw the radial gradient ring
maskCanvas.drawArc(rect, -90, 360, false, p);

}

我的问题是,无论我使用什么 PortDuff.Mode,我总是得到一个实心环(或没有环),如本例所示,环从边缘偏移并涂成红色,以便我可以看到发生了什么上。

enter image description here

关于如何使这项工作有任何想法吗?

最佳答案

我认为问题在于您如何设置颜色。

颜色分量是(alpha,R,G,B),每一个都是从0到255所以当你写 0xFFFF0000 时。 alpha 值设置透明度。所以当你将 alpha 设置为 FF 时,这意味着它是完全不透明的,而 00 是完全透明的。所以尝试更改 alpha 值.. 可能类似于 0x70FF0000

关于android - 创建具有径向渐变透明度的环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16133149/

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