我正在创建一个图形表单,其中坐标x,y的对象被绘制到图形中。它适用于小x和y,但是当我想在不同的地方绘制它们(f.e. x = 500,y = 300)时它们会消失。
public WindowHandler()
{
dc = this.CreateGraphics();
this.Size = new Size(sizeX, sizeY); // 800x600
startSimulation = new Button
{
// button properties
};
this.Controls.Add(startSimulation);
startSimulation.Click += new EventHandler(StartSimulationClick);
}
private void CreationsMethods()
{
creations.PaintAllAnimals(dc);
}
public void PaintAllAnimals(Graphics g)
{
foreach (var animal in ecoStructure.world.animals)
{
animal.PaintAnimal(g);
}
}
public void PaintAnimal(Graphics graphics)
{
Rectangle rectangle = new Rectangle(x, y, 3, 3);
Pen pen = new Pen(colour);
graphics.DrawRectangle(pen, rectangle);
graphics.FillRectangle(colour, rectangle);
}
我想将所有对象放在窗口上。有没有办法让图形“更大”?我需要另一个吗?或者我应该使用不同的工具来绘制矩形?
感谢@Chris Dunaway在评论中发表回答。所以我删除了CreateCraphics,而不是我现在使用OnPaint方法。它运作缓慢,但有效。所以我会尝试尽可能快地完成它。现在,我刚刚创建了这个。 NextStepClick是我如何使用OnPaint绘制矩形。
private void CreationsMethods(object sender, PaintEventArgs e)
{
dc = e.Graphics;
base.OnPaint(e);
creations.PaintAllAnimals(dc);
}
private void NextStepClick(object sender, EventArgs e)
{
this.Refresh();
picBox.Paint += new System.Windows.Forms.PaintEventHandler(CreationsMethods);
}