2016-07-19 3 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

Редакция:

Извинения для такого широкого вопроса:

я использовал этот код, и это рисует линию снизу на экране, я хочу, чтобы уменьшить его длина, которая идет вверх. используйте этот код.

Графика в мм.

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

Каковы ваши «концы»? Вы можете использовать 'e.Graphics.Clip', чтобы определить размер графика на вашем графике. –

+0

Я не понимаю, на ваш вопрос. Если вы хотите понять больше, чем просто скопировать и вставить код, то документы - это хорошее место для начала. Например https://msdn.microsoft.com/en-us/library/f956fzw1(v=vs.110).aspx. Если есть конкретные вопросы, которые вы все еще имеете после прочтения, тогда лучше всего тогда спросить их здесь. Я очень сомневаюсь, что вы получаете «случайные результаты» в своих экспериментах, но не видя кода, который вы использовали, и результатов, которые вы получили (наряду с сообщением о том, что вы ожидали), тогда очень сложно нам рассказать вам, где вы поступили не так, и что ваши недоразумения могут быть. – Chris

+1

Ваш код рисует линию между p1 и p2 Ваши точки состоят из одной координаты x и один y. Точка p1 = новая точка (20, 10); Точка p2 = новая точка (10, 10); Потянул бы горизонтальную линию, так как координата y - то же самое – Jonny

ответ

1

DrawLine Соединяет две точки в пространстве.

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)); 

Это нарисует зеленая линия на десять пикселей вниз. Горизонтально по экрану.

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

очень полезно, не могли бы вы проверить мой отредактированный вопрос? –