C#Graphics不需要绘制矩形

问题描述 投票:1回答:1

我正在创建一个图形表单,其中坐标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);
        }

我想将所有对象放在窗口上。有没有办法让图形“更大”?我需要另一个吗?或者我应该使用不同的工具来绘制矩形?

c# graphics size
1个回答
0
投票

感谢@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);
        }

© www.soinside.com 2019 - 2024. All rights reserved.