我对 Windows 表单编码非常陌生,我正在尝试制作一个具有三个按钮(圆形、矩形和线条)的迷你绘画,当它获得一个按钮作为输入时,它将在面板中绘制形状。 我有这个形状类
class shape
{
public Color color { get; set; }
public int width { get; set; }
public int startx { get; set; }
public int starty { get; set; }
}
它具有颜色、宽度和开始位置属性。然后我有这个矩形类,例如:
class rectangle : shape
{
int length { get; set; }
int width { get; set; }
}
它从形状类继承共享属性。现在我想在 panel 中打印一个矩形。我熟悉 DrawRectangle
方法,我打印了一个矩形,如下所示:
Pen black = new Pen(Color.Black);
Rectangle rect = new Rectangle(20,20,400,200);
private void panel1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
g.DrawRectangle(black, rect);
}
但我不知道如何从类矩形:形状
绘制矩形。我在从单击按钮到矩形分配值时也遇到问题。
你能帮我吗?
最佳答案
我建议您在基类中拥有一个每个形状都会覆盖的绘制函数。
class shape
{
public Color color { get; set; }
public int thickness { get; set; }
public int startx { get; set; }
public int starty { get; set; }
public virtual void Draw(Graphics g)
{
}
}
class rectangle : shape
{
public int length { get; set; }
public int width { get; set; }
public override void Draw(Graphics g)
{
using (Pen pen = new Pen(color))
{
g.DrawRectangle(pen, new Rectangle(startx, starty, width, length));
}
}
}
然后可以通过调用.Draw(graphics)来绘制任何形状。 定义你的矩形:
rectangle rectangle = new rectangle();
rectangle.startx = 20;
rectangle.starty = 20;
rectangle.width = 400;
rectangle.length = 200;
然后在您的 OnPaint 中(或您要执行此操作的任何地方):
Graphics g = panel1.CreateGraphics();
rectangle.Draw(g);
这样做的好处是,您可以拥有一个列表,只需迭代它们,并在拥有多个形状时绘制每个列表:
Graphics g = panel1.CreateGraphics();
foreach (shape s in shapes) // Assuming shapes is List<shape>
s.Draw(g);
关于c# - 画一个矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40480741/