0

我今天试图在 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.

4

4 回答 4

3

Random.Next返回一个int,但FromArgb需要byte

所以你需要将整数转换为字节:

randomColor = Color.FromArgb((byte)randomGenerator.Next(1, 255),
              (byte)randomGenerator.Next...`
于 2013-05-07T03:08:01.370 回答
1

您可以将随机值转换为该方法期望的“字节”类型:

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 的引用,但您应该在 System 下有一个可用的 Timer 对象.Timers.Timer。

于 2013-05-07T03:25:05.360 回答
0

因为 int 比 byte 有更多的范围,所以你需要显式的类型转换

于 2013-05-07T03:14:08.047 回答
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);
于 2015-01-28T17:24:36.470 回答