2016-07-19 5 views
-3

一方の端から他方の端までどのように線を描くのですか?その長さと方向をどのように制御しますか?C#で一方の端から他方の端まで線を引く方法は?

私は値を変更してテストしていますが、ランダムな結果が出ています。私は推測したくないので、私が何をしているのかを理解したいと思っています。

これは私のコードです。

Pen blackPen = new Pen(Color.Black, 1); 
Point p1 = new Point(20, 30); 
Point p2 = new Point(10, 10); 
e.Graphics.DrawLine(blackPen,p1,p2); 

詳細情報が必要な場合はお知らせください。 ありがとうございます。

enter image description here

EDITED:など幅広い質問には

謝罪:私はこのコードを使用していると、これは下から画面上に線を描画

が、私はそれを削減したいです長さは上向きです。このコードを使用してください。

グラフィックスはmm単位です。

Pen blackPen = new Pen(Color.Black, 1); 
    Point p1 = new Point(110, 80); 
    Point p2 = new Point(240 , 20); 
+0

あなたの「終わり」は何ですか? 'e.Graphics.Clip'を使って、あなたの描画の' Graphics'のサイズを知りたいかもしれません。 –

+0

私はあなたの質問が何であるか不明です。コードをコピーして貼り付けるだけではなく、ドキュメントを理解することが必要な場合は、ドキュメントを開始するのがよいでしょう。例:https://msdn.microsoft.com/en-us/library/f956fzw1(v=vs.110).aspxそれらを読んだ後であなたがまだ持っている特定の質問がある場合は、実際にここでそれらに尋ねるのが最善です。私はあなたの実験では「ランダムな結果」を得ているとは思っていますが、使用していたコードとあなたが得た結果を見ずに、あなたの誤解はあるかもしれません。 – Chris

+1

あなたのコードはp1とp2の間に線を描きます あなたのポイントはそれぞれ1つのx座標と1つのy座標で構成されています。 ポイントp1 =新しいポイント(20、10)。 ポイントp2 =新しいポイント(10、10)。 y座標が同じであるので水平線を描画します – Jonny

答えて

1

DrawLineは、2つの点を結んでいる。

Screen coordinates [X,Y] 

[0,0] [1,0] [2,0] [3,0] 
[0,1] [1,1] [2,1] [3,1] 
[0,2] [1,2] [2,2] [3,2] 
[0,3] [1,3] [2,3] [3,3] 
[0,4] [1,4] [2,4] [3,4] 

ですから、DrawLine(pen, new Point(0, 2), new Point(2, 4));を入力する場合は、取得します:

[0,0] [1,0] [2,0] [3,0] 
[0,1] [1,1] [2,1] [3,1] 
===== [1,2] [2,2] [3,2] 
[0,3] ===== [2,3] [3,3] 
[0,4] [1,4] ===== [3,4] 
+0

非常に参考になります、私の編集した質問をチェックしてください? –

0

Xは、水平方向の位置を指定するために使用されます。 0は最も左の位置で、右端の位置は画面サイズ(解像度)に依存します。ある種のウィンドウやキャンバスがあれば、同じことが適用されます。

Yは、垂直位置を指定するために使用されます。 0は画面の一番上の位置で、一番下の位置は画面サイズ(解像度)にも依存します。あなたが画面に1920×1080個のピクセルを持っている場合は

、ここでこれは、右下の隅にあなたの左上隅からの黒線を描画します

いくつかの例

e.Graphics.DrawLine(new Pen(Color.Black, 1),new Point(0,0), new Point(1919, 1079)); 

これが描画されますがあります緑の線は上から10ピクセル下にあります。画面上で横方向に

e.Graphics.DrawLine(new Pen(Color.Green, 1),new Point(0,10), new Point(1919, 10)); 

そして、これはあなたのスクリーンのために

e.Graphics.DrawLine(new Pen(Color.Red, 1),new Point(0,540), new Point(1919, 540)); 

最後に、これは青色の線を描画します縦画面の中央を横断

e.Graphics.DrawLine(new Pen(Color.Blue, 1),new Point(960,0), new Point(960, 1079)); 

の真ん中を横切って水平赤い線を描画しますあなたの追加質問

Pen blackPen = new Pen(Color.Black, 1); 
Point p1 = new Point(110, 80); 
Point p2 = new Point(240 , 20); 

110、80から240,20に描画しています。 これで80ピクセル下がり、その上に60ピクセル上の点(20)に描画します。

変更

Point p2 = new Point(240 , 20); 

Point p2 = new Point(240 , 40); 

に、右端を参照してください下に移動します。

+0

非常に参考になります、私の編集した質問をチェックしていただけますか? –

関連する問題