WPF Graphics.FillPolygon не рисует несколько полигонов без Sleep - PullRequest
0 голосов
/ 02 мая 2011

Следующий код рисует несколько треугольников, только если с помощью Sleep (1) без сна он рисует только один треугольник:

  public void Draw(Graphics g)
        {
            int count = 3;

            for (int i = 0; i < count; i++)
            {
                System.Drawing.Color color = GetColor();
                System.Drawing.Point[] points = GetTriangle();

                g.FillPolygon(new System.Drawing.SolidBrush(color), points);

                //System.Threading.Thread.Sleep(1);
            }
        }

Где этот код неправильный?
Вот код маршрутизации:

private System.Drawing.Color GetColor()
        {
            Random rand = new Random((int)DateTime.Now.Ticks);
            byte a = (byte)rand.Next(100); a += 155;
            byte r = (byte)rand.Next(255);
            byte g = (byte)rand.Next(255);
            byte b = (byte)rand.Next(255);

            return System.Drawing.Color.FromArgb(a, r, g, b);
        }

        private System.Drawing.Point[] GetTriangle()
        {
            Random rand = new Random((int)DateTime.Now.Ticks);

            int x0 = rand.Next((int)IMAGE_W);
            int y0 = rand.Next((int)IMAGE_H);
            int x1 = rand.Next((int)IMAGE_W);
            int y1 = rand.Next((int)IMAGE_H);
            int x2 = rand.Next((int)IMAGE_W);
            int y2 = rand.Next((int)IMAGE_H);

            System.Drawing.Point x = new System.Drawing.Point(x0, y0);
            System.Drawing.Point y = new System.Drawing.Point(x1, y1);
            System.Drawing.Point z = new System.Drawing.Point(x2, y2);
            System.Drawing.Point[] points = new System.Drawing.Point[] { x, y, z };

            return points;
        }

1 Ответ

1 голос
/ 02 мая 2011

Просто предположение: GetTriangle() каждый раз создает новый экземпляр Random.

...