android - 无法让 Color.HSVToColor 在 Android 上工作

标签 android hsv

我从 View 派生了一个类,并实现了 onDraw 方法,如下所示:

protected void onDraw( Canvas canvas )
{
    Paint p = new Paint();
    p.setColor( Color.HSVToColor( new float[]{ 1.f, 1.f, 1.f } ) );
    p.setStyle( Paint.Style.FILL );
    canvas.drawRect( area, p );
}

我期待看到一个无论如何着色的矩形,但屏幕保持白色,无论我尝试使用哪个值来确定色相、明度和饱和度。变量 area 是一个 RectF。这很好,因为如果我将颜色添加到 Color.RED,它就可以工作。

Android 文档在 Color.HSVToColor 上声明:

Convert HSV components to an ARGB color. Alpha set to 0xFF. hsv[0] is Hue [0 .. 360) hsv[1] is Saturation [0...1] hsv[2] is Value [0...1] If hsv values are out of range, they are pinned.

我尝试了很多色相/饱和度/值组合,但屏幕始终保持空白。此外,我尝试了以下方法,结果相同:

float[] hsv = new float[ 3 ];
Color.colorToHSV( Color.RED, hsv );

Paint p = new Paint();
p.setColor( Color.HSVToColor( hsv ) );
p.setStyle( Paint.Style.FILL );
canvas.drawRect( area, p );

我做错了什么?

最佳答案

您的抽奖应该可以正常进行。一定有什么东西缺失了,或者你做的不对。

mpaint.setColor( Color.HSVToColor( new float[]{ 1f, 1f, 1f } ) );   

上面应该将颜色设置为红色。

我所做的与您在 onDraw() 中所做的类似,只是我更改了值并且它起作用了。

public class FingerPaintActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyView mv= new MyView(this);
setContentView(mv);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
class MyView extends View
{
    Context c;      
    private Paint mpaint;

public MyView(Context context) {
    super(context);
    c= context;
    mpaint= new Paint();
    //mpaint.setColor(Color.RED);
    mpaint.setColor( Color.HSVToColor( new float[]{ 0f, 0f, 0.5f } ) );
    mpaint.setStyle(Paint.Style.FILL);
 }

    @Override
    protected void onDraw(Canvas canvas) {
       canvas.drawRect(300, 100, 200, 300, mpaint);

    }
}
}

http://developer.android.com/reference/android/graphics/Color.html#HSVToColor%28int,%20float%5B%5D%29 .

enter image description here

关于android - 无法让 Color.HSVToColor 在 Android 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15720681/

相关文章:

OpenCV (C++) - 设置像素的 HSV 值

opencv - 为什么opencv中hue的范围是0-180°

c++ - OpenCV - 奇数 HSV 范围检测

java - Android Studio 布局编辑器是否显示自定义 View 属性?

java - 改造:处理数组或单个对象时出现问题

android - 从 Sencha Touch 访问 native API/系统

Android 崩溃报告未显示在 Google Play 控制台的 ANR 和崩溃报告中

java - 初始化 Android 传感器管理器时出错

matlab - MATLAB rgb2hsv()与OpenCV cvtColor()

image-processing - HSV 中的红色范围是多少?