gpt4 book ai didi

android - Android 中的椭圆渐变

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:27:15 37 4
gpt4 key购买 nike

我知道如何设置和显示椭圆形。我知道如何对这个形状应用渐变。我想不通的是如何获得与形状匹配的椭圆形渐变。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<gradient
android:startColor="#66FFFFFF"
android:endColor="#00FFFFFF"
android:gradientRadius="100"
android:type="radial" />
</shape>

如果你能想象得到,这个渐变在中间有一个半透明的白光,然后在边缘逐渐消失到 alpha 零。我需要让它以椭圆形出现,而不仅仅是圆形渐变。我怎样才能做到这一点?

最佳答案

我建议使用更“直接”的绘图方法。如果你可以逐像素绘制渐变,那么你只需要记住

  • circle 渐变颜色与 r
  • 成正比
  • ellipse(卵形) 渐变颜色正比于r1+r2

这里:

r - 到圆心的距离

r1,r2 - 到椭圆两个焦点的距离

编辑:考虑这个像素着色器代码:

uniform sampler2D tex;

void main()
{
vec2 center = vec2(0.5,0.5);
float len = 1.3*(distance(gl_TexCoord[0].xy,center));
vec2 foc1 = vec2(len,0.);
vec2 foc2 = vec2(-len,0.);
float r = distance(center+foc1,gl_TexCoord[0].xy) +
distance(center+foc2,gl_TexCoord[0].xy);
float k = pow(r*0.9,1.3);
vec4 color = vec4(k,k,k,1.);
gl_FragColor = color;
}

你会得到类似这样的椭圆形: alt text

祝你好运

关于android - Android 中的椭圆渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3527567/

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