2016-03-23 27 views
0

4隅の図形を描画しようとしています。コーナーの詳細は、XとYの座標で与えられます(下の図を参照)。私はこのリンクで指定された方法を試しました: Drawing Colors in a picturebox?しかし、問題は四角形だけです。 Shape with X and YWindowsフォームアプリケーションで図形を描画

誰かが何かを提案できますか?私は基本的に車の掃引パス(車で撮影したエリア)を生成する必要があります。だから、私は車の中心をXとYで、オリエンテーションを度で取得します。それから私は、XとYの空間で車のコーナーポイントを決定します。今私はそれを可視化する必要があります。助けてください。

答えて

1

あなたは長方形を作成するためにMatrixクラスと一緒にRectangleクラスを使用することができますし、次のように方向を変えて回転してください:

Graphics g = new Graphics() 
Rectangle car = new Rectangle(200, 200, 100, 50) 
Matrix m = new Matrix() 
m.RotateAt(orientation, new PointF(car.Left + (car.Width/2), car.Top + (car.Height/2))); 
g.Transform = m 
g.FillRectangle(Pens.Red, car) 
+0

私はこれが最良の答えだと思います。 –

1

あなたは回転度を知っているので、Graphics.RotateTransformを使用できます。この方法で、コーナーを自分で計算する必要はありません(この実装はより速いと思われます)。あなたも、(Graphics.TranslateTransform使用して)それを翻訳する必要があるかもしれないので、それは、(0;0)の周りを回転すること

protected override void OnPaint(PaintEventArgs e) 
{ 
    base.OnPaint(e); 
    e.Graphics.RotateTransform(45 /* your degrees here */); 
    e.Graphics.FillRectangle(Brushes.Red, 10, 10, 200, 100); 
} 

注意。次のように

2

あなたは、あなたのフォーム/コントロールのOnDraw方法でGraphics.DrawPolygon(またはGraphics.FillPolygon)メソッドを使用することができます。

protected override void OnPaint(PaintEventArgs e) 
{ 
    // If there is an image and it has a location, 
    // paint it when the Form is repainted. 
    base.OnPaint(e); 
    PointF[] rotatedVertices = // Your rotated rectangle vertices 
    e.Graphics.DrawPolygon(yourPen, rotatedVertices); 
    // OR 
    e.Graphics.FillPolygon(new SolidBrush(Color.Red), rotatedVertices); 
} 
関連する問題