C# 为什么属性网格显示的颜色不正确?
我有一个属性网格,每当我在面板上单击一个矩形时,它就会显示该矩形的属性。除颜色外,所有属性均正确,颜色始终保持默认值(白色)。我想知道是否有一种方法可以让属性网格显示矩形的颜色 下面是它当前的屏幕截图:C# 为什么属性网格显示的颜色不正确?,c#,winforms,C#,Winforms,我有一个属性网格,每当我在面板上单击一个矩形时,它就会显示该矩形的属性。除颜色外,所有属性均正确,颜色始终保持默认值(白色)。我想知道是否有一种方法可以让属性网格显示矩形的颜色 下面是它当前的屏幕截图: 下面是我创建矩形的方法: 这是我的矩形类 internal class rectangle : Shape { public int length { get; set; } public int width { get; set; } Ran
下面是我创建矩形的方法:
这是我的矩形类
internal class rectangle : Shape
{
public int length { get; set; }
public int width { get; set; }
Random rand = new Random();
Rectangle newRectangle;
public override Rectangle GetRectangle()
{
return this.newRectangle;
}
private Color randomColor()
{
int r = rand.Next(0, 256); // Random number between 0 - 255
int g = rand.Next(0, 256);
int b = rand.Next(0, 256);
Color color = Color.FromArgb(r, g, b);
return color;
}
private Rectangle makeRectangle(int startx, int starty, int width, int length)
{
newRectangle = new Rectangle(startx, starty, width, length);
return newRectangle;
}
public override void Draw(Graphics g)
{
using (SolidBrush brush = new SolidBrush(randomColor()))
{
g.FillRectangle(brush, makeRectangle(startx, starty, width, length));
}
}
}
矩形类是从形状派生的:
internal abstract class Shape
{
public Color color { get; set; }
public int thickness { get; set; }
public int startx { get; set; }
public int starty { get; set; }
public abstract Rectangle GetRectangle();
public virtual void Draw(Graphics g)
{
}
}
在主窗体中,我正在绘制矩形:
// Rectangle 1
List<Shape> shapes = new List<Shape>();
rectangle rectangle = new rectangle();
rectangle.startx = 100;
rectangle.starty = 200;
rectangle.width = 200;
rectangle.length = 100;
shapes.Add(rectangle);
rectangle.Draw(g);
根据提供的代码,我正在创建带有随机rgb颜色的SolidBrush。所以我希望属性网格显示正确的颜色。谢谢 您正在创建一种随机颜色,以便在
Draw
方法中创建笔刷,但您没有将此颜色指定给要在特性网格中显示的对象的任何特性
rectangle rectangle = new rectangle();
rectangle.color = randomColor(); // <========================
rectangle.startx = 100;
rectangle.starty = 200;
rectangle.width = 200;
rectangle.length = 100;
应将此随机颜色指定给正在属性网格中显示的形状
或矩形
对象
rectangle rectangle = new rectangle();
rectangle.color = randomColor(); // <========================
rectangle.startx = 100;
rectangle.starty = 200;
rectangle.width = 200;
rectangle.length = 100;
属性网格显示的属性不是标准
System.Drawing.Rectangle
的属性。您正在使用的矩形
和形状
类的定义在哪里?您向属性网格分配了什么以及如何分配?您需要显示属性。现在唯一的问题是,您绘制的随机颜色显然不会显示在属性网格上,因为它不会在任何属性中设置。
using (SolidBrush brush = new SolidBrush(this.color))
{
g.FillRectangle(brush, makeRectangle(startx, starty, width, length));
}