gpt4 book ai didi

android - 在运行时绘制 HSV 圆

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:39:43 25 4
gpt4 key购买 nike

我想在我的应用程序中有一个颜色选择器,看起来像这样

Something like this

我尝试过逐像素填充位图,尝试使用带有 drawArc() 方法的 Canvas 。这两种方式都不利于性能。

有什么想法吗?

最佳答案

它可能不准确(与颜色、饱和度等相关),但是 here is something开始看起来像你想要的......

import android.graphics.*;
import android.graphics.drawable.Drawable;

public class HSV_Circle extends Drawable {
Paint p = new Paint();

@Override
public void draw(Canvas canvas) {
int width = canvas.getWidth();
int height = canvas.getHeight();
int min = Math.min(width,height);

RadialGradient radial_gradient = new RadialGradient(width/2, height/2, min/2, 0xFFFFFFFF,
0x00FFFFFF, android.graphics.Shader.TileMode.CLAMP);

int colors[] = new int[13];
float hsv[] = new float[3];
hsv[1]=1;
hsv[2]=1;
for (int i=0; i<12; i++) {
hsv[0] = (360 / 12) * i;
colors[i] = Color.HSVToColor(hsv);
}
colors[12] = colors[0];

SweepGradient sweep_gradient = new SweepGradient(width/2, height/2, colors, null);

ComposeShader shader = new ComposeShader(sweep_gradient, radial_gradient, PorterDuff.Mode.SRC_OVER);

p.setDither(true);
p.setShader(shader);

canvas.drawCircle(width/2, height/2, min/2, p);
}

@Override
public void setAlpha(int i) {
}

@Override
public void setColorFilter(ColorFilter colorFilter) {
}

@Override
public int getOpacity() {
return PixelFormat.OPAQUE;
}
}

关于android - 在运行时绘制 HSV 圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13266735/

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