gpt4 book ai didi

android - 从指定位置偏移绘制线性渐变

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:40:28 35 4
gpt4 key购买 nike

我用这段代码用线性渐变制作了一个色调渐变:(我知道它可以用 Color.parseColor 变得更简单,但它必须是我打算做的事情。我也不能使用可绘制对象。)

colors = new int[]{ Color.HSVToColor(new float[]{0, 1, 1}),
Color.HSVToColor(new float[]{60, 1, 1}),
Color.HSVToColor(new float[]{120, 1, 1}),
Color.HSVToColor(new float[]{180, 1, 1}),
Color.HSVToColor(new float[]{240, 1, 1}),
Color.HSVToColor(new float[]{300, 1, 1}),
Color.HSVToColor(new float[]{360, 1, 1}) };
Shader shader = new LinearGradient(0, 0, width, 0, colors, null, Shader.TileMode.CLAMP);
paint.setShader(shader);

与预期结果相比,生成的结果颜色略有偏移,绿色区域太小,蓝色区域太大。

comparison

我检查了一切。我尝试使用 new float[]{0f, 1/6f, 2/6f, 3/6f, 4/6f, 5/6f, 1f} 而不是 null对于 positions 参数,结果相同。这也可能是一个错误。

请注意,这不是 this post 的副本也不this one .这些是关于代码中设置的不正确的渐变停止点,这不是我的情况。它可能与 this one 有关但我不知道该怎么做。

编辑:也许这可以通过为颜色设置不相等的位置来解决,但我如何计算这些确切的位置?

最佳答案

我总共花了 3 个多小时来解决这个问题,好吧……结果几乎什么都没有。它在我的代码中。最糟糕的是我添加了赏金并在 15 分钟后解决了它。

我在 View 中绘制了带有特定填充的渐变,而不是这个

LinearGradient(0, 0, width, 0, colors, null, Shader.TileMode.CLAMP);

我必须这样做:

LinearGradient(left, 0, right, 0, colors, null, Shader.TileMode.CLAMP);

渐变以某种方式在我添加到我的 View 的填充之前开始,位于 (0, 0),这是我的渐变开始向左倾斜 10 度,导致偏移。

enter image description here

现在一切都说得通了。

关于android - 从指定位置偏移绘制线性渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40923327/

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