5

C#で指定された入力座標に従ってポリゴンを描画するにはどうすればよいですか?

ここに画像の説明を入力

4

2 に答える 2

8

これらの座標に基づいて、何らかの形式のスケーリングを画像に適用しているため、コードは表示されませんでした。

PictureBox の Paint イベントを使用して、画面上のこれらの座標を使用する例を次に示します。ポリゴンを塗りつぶし、境界線を描画し、すべてのポイントをループして赤い円を描画します。

void pictureBox1_Paint(object sender, PaintEventArgs e) {
  e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
  e.Graphics.Clear(Color.White);

  // draw the shading background:
  List<Point> shadePoints = new List<Point>();
  shadePoints.Add(new Point(0, pictureBox1.ClientSize.Height));
  shadePoints.Add(new Point(pictureBox1.ClientSize.Width, 0));
  shadePoints.Add(new Point(pictureBox1.ClientSize.Width,
                            pictureBox1.ClientSize.Height));
  e.Graphics.FillPolygon(Brushes.LightGray, shadePoints.ToArray());

  // scale the drawing larger:
  using (Matrix m = new Matrix()) {
    m.Scale(4, 4);
    e.Graphics.Transform = m;

    List<Point> polyPoints = new List<Point>();
    polyPoints.Add(new Point(10, 10));
    polyPoints.Add(new Point(12, 35));
    polyPoints.Add(new Point(22, 35));
    polyPoints.Add(new Point(24, 22));

    // use a semi-transparent background brush:
    using (SolidBrush br = new SolidBrush(Color.FromArgb(100, Color.Yellow))) {
      e.Graphics.FillPolygon(br, polyPoints.ToArray());
    }
    e.Graphics.DrawPolygon(Pens.DarkBlue, polyPoints.ToArray());

    foreach (Point p in polyPoints) {
      e.Graphics.FillEllipse(Brushes.Red, 
                             new Rectangle(p.X - 2, p.Y - 2, 4, 4));
    }
  }
}

ここに画像の説明を入力

于 2012-08-24T13:03:31.600 に答える
3

Graphics.DrawPolygonを使用できます。座標を Point の配列に格納し、それを DrawPolygon メソッドに渡すことができます。あなたは見たいかもしれません:

C# を使用して WinForms でグラフィックスを使用して描画する

private System.Drawing.Graphics g;
System.Drawing.Point[] p = new System.Drawing.Point[6];
p[0].X = 0;
p[0].Y = 0;
p[1].X = 53;
p[1].Y = 111;
p[2].X = 114;
p[2].Y = 86;
p[3].X = 34;
p[3].Y = 34;
p[4].X = 165;
p[4].Y = 7;
g = PictureBox1.CreateGraphics();
g.DrawPolygon(pen1, p);
于 2012-08-24T11:32:36.693 に答える