1
我試圖在C#中用RGB創建類Color,顏色值(紅色,綠色,藍色)必須在範圍[0,1]內。
這是我的代碼在C#中創建類RGB顏色#
public class ColorRGB
{
private ColorRGB(double _red, double _green, double _blue)
{
Red = _red;
Green = _green;
Blue = _blue;
}
public static ColorRGB ColorRGB_RGBModel(double _red, double _green, double _blue)
{
return new ColorRGB(_red, _green, _blue);
}
public static ColorRGB ColorRGB_CMYModel(double _cyan, double _magenta, double _yellow)
{
var _red = 1 - _cyan;
var _green = 1 - _magenta;
var _blue = 1 - _yellow;
return new ColorRGB(_red, _green, _blue);
}
public ColorRGB AddRGB(ColorRGB _secondColor)
{
return ColorRGB_RGBModel(this.Red + _secondColor.Red, this.Green + _secondColor.Green, this.Blue + _secondColor.Blue);
}
public ColorRGB SubtractRGB(ColorRGB _secondColor)
{
return ColorRGB_RGBModel(this.Red - _secondColor.Red, this.Green - _secondColor.Green, this.Blue - _secondColor.Blue);
}
public double Red {
get { return red; }
private set { red = red < 0 ? 0 : (red > 1 ? 1 : value); }
}
public double Green
{
get { return green; }
private set { green = green < 0 ? 0 : (green > 1 ? 1 : value); }
}
public double Blue
{
get { return blue; }
private set { blue = blue < 0 ? 0 : (blue > 1 ? 1 : value); }
}
public double Cyan
{
get { return cyan; }
private set { cyan = cyan < 0 ? 0 : (cyan > 1 ? 1 : value); }
}
public double Magenta
{
get { return magenta; }
private set { magenta = magenta < 0 ? 0 : (magenta > 1 ? 1 : value); }
}
public double Yellow
{
get { return yellow; }
private set { yellow = yellow < 0 ? 0 : (yellow > 1 ? 1 : value); }
}
private double red;
private double green;
private double blue;
private double cyan;
private double magenta;
private double yellow;
}
}
,但是當我試圖創建這個類的一個實例,並試圖建立的顏色(紅,貪婪,藍)值超出範圍[0,1],我checkings red = red < 0 ? 0 : (red > 1 ? 1 : value);
和其他人沒有工作。
有人可以解釋我爲什麼會發生,以及如何解決這個問題?
我打算建議將邊界檢查分解爲它自己的函數以使測試更容易..但是這是答案: ) – Izzy
非常感謝,現在它工作! – Heidel
@Izzy謝謝你,這是非常有趣的想法! – Heidel