- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我从 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);
}
}
}
关于android - 无法让 Color.HSVToColor 在 Android 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15720681/
这是我的代码,应该采用颜色 int,将其转换为 HSV,将 0.5 添加到 hue 并转换回 int。但在输出中,而不是 0xFF00FFFF 给出 -64768 ...任何想法可能是什么问题?
我正在编写一款 Android 游戏。在游戏中,不同颜色的方 block 会掉落到地上。当两个相同颜色的方 block 相互重叠时,它们将合并为一个颜色较深的方 block 。但是,我观察到具有相同颜
我从 View 派生了一个类,并实现了 onDraw 方法,如下所示: protected void onDraw( Canvas canvas ) { Paint p = new Paint
我是一名优秀的程序员,十分优秀!