我想创建随机绘图颜色。 有一个错误。 你能帮我解决一下这段代码吗?

        private Random random;

        private void MainForm_Load(object sender, EventArgs e)
        {
            random = new Random();
        }

        private Color GetRandomColor()
        {
            return Color.FromArgb(random.Next(0, 255), random.Next(0,255),random.Next(0,255));
        // The error is here
        }  

        public SolidBrush brushGet()
        {
            SolidBrush oBrush = new SolidBrush(GetRandomColor());
            return oBrush;
        }

===============>>#1 票数:3

这适用于我(在GetRandomColor):

Random random = new Random();
return Color.FromArgb((byte)random.Next(0, 255), (byte)random.Next(0, 255), (byte)random.Next(0, 255));

===============>>#2 票数:3 已采纳

我没有看到上述代码有任何问题,除了在调用之前没有初始化Random对象。 也绝对不需要在表单的Load事件中初始化它; 它可以在声明时正确完成:

private static readonly Random Random = new Random();

就个人而言,我不会在本地范围内声明它,据我所知,如果你这样做,你每次都会得到相同的价值。 我个人也不认为需要过于复杂的事情; 每次生成随机数并使用Color.FromAgb()方法你应该没问题。

===============>>#3 票数:2

    private Color color;
    private int b;
    public Color Random()
    {
        Random r = new Random();
        b = r.Next(1, 5);
        switch (b)
        {
            case 1:
                {
                    color = Color.Red;
                }
                break;
            case 2:
                {
                    color = Color.Blue;
                }
                break;
            case 3:
                {
                    color = Color.Green;
                }
                break;
            case 4:
                {
                    color = Color.Yellow;
                }
                break;
        }

        return color;
    }

===============>>#4 票数:1

错误在这里

return Color.FromArgb(random.Next(0,255), random.Next(0,255), random.Next(0,255));

你需要转换random.Next(0, 255)执行this (byte)random.Next(0, 255)FromArgb需要4个参数。

===============>>#5 票数:1

可以避免生成3个随机数并计算颜色整数:

static Random random = new Random();

Color GetRandomColor() { return Color.FromArgb(unchecked(random.Next() | 255 << 24)); }

Color GetRandomKnownColor() {
    return Color.FromKnownColor((KnownColor)random.Next((int)KnownColor.YellowGreen) + 1); }

unchecked | 255 << 24 unchecked | 255 << 24部分用于避免透明颜色。

===============>>#6 票数:1

MainForm_Load可以创建random之前调用brushGet

===============>>#7 票数:0

using Microsoft.VisualBasic.PowerPacks;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        Random random = new Random();

        public Form1()
        {    
            InitializeComponent();
        }

        private void ovalShape1_Click(object sender, EventArgs e)
        {        
            ovalShape1.BackStyle = BackStyle.Opaque;

            random = new Random();

            ovalShape1.BackColor = Color.FromArgb(random.Next(0, 255), random.Next(0, 255), random.Next(0, 255));

         }
     }
 }

  ask by Hzyf translate from so

未解决问题?本站智能推荐:

1回复

Javascript中的System.Drawing.Color

问候, 我有一个类(我们称之为Car),它具有System.Drawing.Color类型的属性(将其称为CarColor)。 我有一个脚本服务函数,它使用这个Car类作为返回值,工作得很好。 然后我有另一个脚本服务函数,它将Car对象作为参数。 我想在Javascript中更改汽车
3回复

如何将System.Drawing.Color值保存在数组中? 无法将类型“对象”隐式转换为“系统绘图颜色”

我遇到错误Cannot implicitly convert type 'object' to 'System.Drawing.Color' 。 我的代码如下: - - 这是我的全部代码,请让我知道如何解决此错误。 在此先感谢您。
1回复

将互操作颜色转换为System.Drawing.Color

我正在寻找如何在C#中将Microsoft.Office.Interop.Word / Excel / PowerPoint.Color转换为System.Drawing.Color。 我在这里或这里的论坛中发现了相反的情况,但是我没有找到如何从Interop Color转换为System
1回复

基于System.Drawing.Color对象的颜色过渡

目前,我正在为C#.NET开发DMX库。 目前,我还停留在基于“起始颜色”和“结束颜色”创建颜色过渡的过程中。 该函数带有3个参数,第一个是DMXController对象(基本上是扩展的SerialPort),第二个是startColor,第三个是endColor。 整个问题将在单
6回复

将System.Drawing.Color转换为RGB和Hex值

使用C#我试图开发以下两个。 我这样做可能有一些问题,需要你的建议。 另外,我不知道是否有任何现有的方法来做同样的事情。 谢谢。
1回复

System.Drawing.Color ToKnownName

我需要一个与System.Drawing.Color.FromKnownName相反的函数,该函数将System.Drawing.Color.Red转换为“ Red”或“ red”。 提供示例代码:
2回复

映射System.Drawing.Color

如果我不映射Color而是映射具有Color属性的对象,则FluentNHibernate会将其成功映射到varbinary(max) 。 但是,鉴于Color实际上仅由4个字节组成,所以这效率极低,我热衷于在不使用新类型代理的情况下改进它。 在Color内部,它由四个属性组成,
3回复

如何将十六进制#FFFFFF转换为System.Drawing.Color [复制]

可能重复: 如何使用.NET从Hex颜色代码中获取Color? 我想将#FFFFFF类的字符串转换为System.Drawing.Color 。 你是怎样做的?
4回复

在System.Drawing.Color中使用十六进制颜色代码

有没有办法在设置数据网格的颜色而不是使用下面的代码时指定十六进制代码(类似于#E9E9E9)。
1回复

将GTK#颜色转换为System.Drawing.Color

我试图将从GTk#颜色对话框中选择的颜色转换为system.Drawing.Color。 我已经尝试过System.Drawing.Color.fromargb(mygtkcolor.Red,mygtkColor.Green,mygtkColor.Blue); mygtkColor类为h