-3
をペイント:HSVは、私はそれをペイントする
HSV
私はすでにそのコードを書きました。私はhsvtorgbメソッドを書くためにそのサイトを使用しました:http://www.rapidtables.com/convert/color/hsv-to-rgb.htm Unfortunatelly私のコードは私が望むものを表示しません。なぜか教えてくれますか?どうもありがとう! 私は答え
void Widget::hsvtorgb(int h, float s, float v)
{
float C, X, m;
float r, g, b;
C = v * s;
X = C*(1 - abs(((h/60) % 2) - 1));
m = v - C;
if(h>=0 && h<60){r = C; g = X; b = 0;}
if(h>=60 && h<120){r = X; g = C; b = 0;}
if(h>=120 && h<180){r = 0; g = C; b = X;}
if(h>=180 && h<240){r = 0; g = X; b = C;}
if(h>=240 && h<300){r = X; g = 0; b = C;}
if(h>=300 && h<360){r = C; g = 0; b = X;}
R = (r + m) * 255;
G = (g + m) * 255;
B = (b + m) * 255;
}
void Widget::on_H_slider_valueChanged(int value)
{
h=value;
for(int i=0; i<600; i++)
{
for(int j=0; j<600; j++)
{
hsvtorgb(1.0*j/600, 1.0*i/600, v);
bits[600*4*i+4*j] = B;
bits[600*4*i+4*j+1] = G;
bits[600*4*i+4*j+2] = R;
}
}
update();
}
void Widget::on_S_slider_valueChanged(int value)
{
s=value/100;
for(int i=0; i<600; i++)
{
for(int j=0; j<600; j++)
{
hsvtorgb(h, s, v);
bits[600*4*i+4*j] = B;
bits[600*4*i+4*j+1] = G;
bits[600*4*i+4*j+2] = R;
}
}
update();
}
void Widget::on_V_slider_valueChanged(int value)
{
v=value/100;
for(int i=0; i<600; i++)
{
for(int j=0; j<600; j++)
{
hsvtorgb(h, s, v);
bits[600*4*i+4*j] = B;
bits[600*4*i+4*j+1] = G;
bits[600*4*i+4*j+2] = R;
}
}
update();
}
待っている、私たちは待っています質問。 –
_ソリューションで私を助けることができますか? SOは、_特定のプログラミング問題を意味します。 –
私の質問は私が間違っていることですか? – JKSX