2017-01-25 2 views
0

フォームにポリゴンを描画したいですが、マウスをクリックしてポリゴンの位置を追加したいと思います。フォームにポリゴンを描画する

今、私は定数(x、y)の位置を与え、それは私にポリゴンを返しますが、マウスをクリックすることでそれらの位置を追加したいと思います。

Point[] po = new Point[] 
      { 

       new Point {X=15, Y=51}, 
       new Point {X=40, Y= 13}, 
       new Point {X=87, Y= 53}, 
       new Point {X=56, Y= 87}, 
       new Point {X=44, Y= 32}, 
      }; 
+2

多くの質問、およびマウスクリックを受信するための利用可能なソースがあります。あなたは何を試しましたか?実際に解決策を見つけようとしましたか? winformsまたはwpfを使用していますか? – Ben

+0

これはあなたの役に立つコード例です。 http://stackoverflow.com/questions/12108534/drawing-a-polygon-according-to-the-input-coordinates –

+0

私はマウスクリックでポリゴンを描画させようとしています。 @Ben – boris315

答えて

0

ドローポリゴンのcustomcontrol作成:ビルド後

using System.Collections.ObjectModel; 
using System.Drawing; 
using System.Linq; 
using System.Windows.Forms; 

namespace WindowsFormsApplication4 
{ 
public partial class DrawPolygon : Control 
{ 
    ObservableCollection<PointF> points; 
    public int SideCount 
    { 
     get { return sideCount; } 
     set { sideCount = value; } 
    } 

    public DrawPolygon() 
    { 
     InitializeComponent(); 
     points = new ObservableCollection<PointF>(); 
     points.CollectionChanged += Points_CollectionChanged; 
    } 

    private void Points_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) 
    { 
     if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add) 
     if (points.Count >= sideCount) 
      { 
       points = new ObservableCollection<PointF>(points.Skip(points.Count - sideCount)); 
       points.CollectionChanged += Points_CollectionChanged; 
      } 
     Refresh(); 
    } 
    protected override void OnMouseClick(MouseEventArgs e) 
    { 
     base.OnMouseClick(e); 
     points.Add(e.Location); 
    } 

    protected override void OnPaint(PaintEventArgs pe) 
    { 
     base.OnPaint(pe); 
     if (points.Count > 1) 
      pe.Graphics.DrawPolygon(Pens.Aqua, points.ToArray()); 

    } 
} 

}

を、あなたは、ツールボックスからフォームに追加することができます。

これは、結果のサンプルです:Polygon

+0

オーバーキルのように聞こえても、重なり合うポリゴンは許可されません。多角形の方が適切です。 – TaW

+0

これはあなたのためにこれを受け入れてください –

関連する問題