2 / 2 / 2
Регистрация: 29.09.2012
Сообщений: 444
|
|
1 | |
Как нарисовать линию из точек10.03.2015, 21:36. Показов 4721. Ответов 18
Метки нет (Все метки)
Здравствуйте.
Подскажите пожалуйста, как нарисовать линию из точек, задав начальные и конечные координаты? Надо нарисовать ровненькую аккуратную линию пиксель к пикселю, в независимости под каким углом она нарисуется. Надо взять точку Form1.canvas.Pixels[x, y]:=clBlack; и из них нарисовать линию от начальной заданной координаты, до конечной заданной координаты. Наверно надо ещё как-то высчитывать кол-во точек на отрезке, чтобы под углом например в 35 градусов рисовалась ровная линия пиксель к пикселю.
0
|
10.03.2015, 21:36 | |
Ответы с готовыми решениями:
18
Нарисовать линию из трех неизвестных точек на image Как нарисовать линию позади фигуры? Как нарисовать линию под углом? Нарисовать линию из точек |
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
10.03.2015, 21:42 | 2 |
Метод TCanvas.LineTo() - он придуман специально для тех, кто не склонен к мазохизму)
0
|
2 / 2 / 2
Регистрация: 29.09.2012
Сообщений: 444
|
|
10.03.2015, 21:47 [ТС] | 3 |
Так и знал что такой ответ будет вначале.
Ну я же не просто так спросил и подробно расписал вопрос. Надо именно из точек, чтобы ровная линия была, а не ступеньками. Я буду рисовать на графическом движке, по координатам x и y. Если рисовать сразу линию, то она грубая получается, ступенчатая, если рисуется не под прямым или 45 градусов углом.
0
|
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
10.03.2015, 21:50 | 4 |
Ты вообще хоть чуточку представляешь как организовано растровое изображение ?)
0
|
northener
|
10.03.2015, 21:53
#5
|
Не по теме: mss, так у ТС в руках будет волшебная палочка "графический движок"
0
|
2 / 2 / 2
Регистрация: 29.09.2012
Сообщений: 444
|
||||||
10.03.2015, 21:59 [ТС] | 6 | |||||
Я что-то типа этого думал:
0
|
mss
|
10.03.2015, 22:01
#7
|
0
|
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
|
|
10.03.2015, 22:12 | 8 |
0
|
2 / 2 / 2
Регистрация: 29.09.2012
Сообщений: 444
|
|
10.03.2015, 22:13 [ТС] | 9 |
Та понятно что пиксели квадратные, думал может из точек аккуратней будет, если их кол-во считать по диагонали, плюс прозрачность увеличить.
0
|
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
10.03.2015, 22:23 | 10 |
Ты их в мелкоскоп что ли разглядывал ?
Или они тебе сами сказали "мы квадратные" ?) Какая "диагональ" может быть у отрезка прямой ?) Прозрачность пикселя ?! Если ты умудришься это сделать, тебе сразу шнобелевскую премию врУчат).. А может быть вручАт)
0
|
northener
|
10.03.2015, 22:24
#11
|
0
|
2 / 2 / 2
Регистрация: 29.09.2012
Сообщений: 444
|
|
10.03.2015, 22:29 [ТС] | 12 |
Ну квадратные образно, понятно что если рисовать длинную линию под углом со смещением в один пиксель, то её физичекски плавной не сделать.
А прозрачность в движке есть, в методе рисования точки и линии, мне то интересен алгоритм был, как вывести точками как можно красивее. Ладно, тему можно закрыть, или удалить, пользы от неё не будет наверно.
0
|
mss
|
10.03.2015, 22:29
#13
|
Не по теме:
И когда они по проводам бегут, то задевают друг друга углами. Оттого утюг и нагревается что задевают)
0
|
10.03.2015, 22:30 | 14 |
тут - решение для одного цвета
https://ru.wikipedia.org/wiki/Алгоритм_Брезенхэма тут - со сглаживанием https://ru.wikipedia.org/wiki/Алгоритм_Ву
1
|
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
10.03.2015, 22:44 | 15 |
Не по теме: Так тебе, оказывается, не ехать, а шашечки ? Ну так бы сразу и сказал) А то "движок")) Добавлено через 12 минут Не по теме:
0
|
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
|
||||||
10.03.2015, 23:46 | 16 | |||||
На Дельфи:
1
|
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
|
|
11.03.2015, 02:29 | 17 |
А это точно что Дельфи не использует эти давно известные алгоритмы. Особенно первый.
0
|
2 / 2 / 2
Регистрация: 29.09.2012
Сообщений: 444
|
|
11.03.2015, 10:26 [ТС] | 19 |
Спасибо, интересно получилось, жаль что пока применить не смогу, тк сложновато для меня.
Движок то уже написан и автор его к сожалению забросил пару лет назад, вот там можно вывести точку, или линию к примеру, с указанным цветом $FF000000, где FF - альфа канал, дальше RGB. А как прикрутить сюда Алгоритм_Ву - фиг знает. К примеру вот так выводится точка: Canvas.PutPixel (x, y: Single; Color: Cardinal); overload; а так линия: Canvas.Line (x1, y1, x2, y2: Single; Color: Cardinal); overload; Ну да ладно, спасибо, много нового узнал.
0
|
11.03.2015, 10:26 | |
11.03.2015, 10:26 | |
Помогаю со студенческими работами здесь
19
Нарисовать ось координат без четвертей и место точек сделать линию Как нарисовать линию? Как нарисовать линию? Как нарисовать линию Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |