我今天试图在C#中生成随机颜色。
Random randomGenerator = new Random();
Color randomColor = Color.FromArgb(randomGenerator.Next(1, 255),
randomGenerator.Next(1, 255),
randomGenerator.Next(1, 255),
randomGenerator.Next(1, 255));
但是VS2012一直在说争论1/2/3/4:
无法从'int'转换为'byte'。
此外,我试图找到System.Drawing.Color
,但找不到它。与System.Timer
相同。
答案 0 :(得分:3)
Random.Next
会返回int
,但FromArgb
会返回byte
。
所以你需要将整数转换成字节:
randomColor = Color.FromArgb((byte)randomGenerator.Next(1, 255),
(byte)randomGenerator.Next...`
答案 1 :(得分:1)
您可以将随机值转换为方法所需的“byte”类型:
Color randomColor = Color.FromArgb((byte)randomGenerator.Next(1, 255),
(byte)randomGenerator.Next(1, 255),
(byte)randomGenerator.Next(1, 255),
(byte)randomGenerator.Next(1, 255));
此外,您可能没有看到System.Drawing.Color,因为,我猜,您在WPF应用程序中并且需要添加对System.Drawing的引用,但是您应该有一个Timer对象在System.Timers.Timer。
下可用答案 2 :(得分:0)
因为int的范围比字节多,所以你需要显式类型转换
答案 3 :(得分:0)
您可以使用以下代码将任意数字转换为argb颜色:
Color color;
int num = 255;
double d = 205.0 / (num + 256);
int red = Math.Min((int)(d * 256), 255);
int green = Math.Min((int)((d * 256 - red) * 256), 255);
int blue = Math.Min((int)(((d * 256 - red) * 256 - green) * 256), 255);
color = Color.FromArgb(red, green, blue);