Толщина линии
|
|
salexeiy | Дата: Воскресенье, 31.12.2017, 15:56 | Сообщение # 1 |
Лейтенант
Группа: Пользователи
Сообщений: 72
Статус: Offline
| Вопрос по графике. Каким способом можно регулировать толщину линии во ФБ? Может есть какая библиотека или алгоритм. Заранее спасибо.
|
|
| |
WQ | Дата: Воскресенье, 31.12.2017, 17:31 | Сообщение # 2 |
Полковник
Группа: Проверенные
Сообщений: 215
Статус: Offline
| salexeiy http://freebasic.ucoz.com/forum/5-139-805-16-1400730222
Сообщение отредактировал WQ - Воскресенье, 31.12.2017, 17:31 |
|
| |
salexeiy | Дата: Понедельник, 01.01.2018, 12:18 | Сообщение # 3 |
Лейтенант
Группа: Пользователи
Сообщений: 72
Статус: Offline
| Это не совсем то, что нужно. Как я понял, алгоритм рисует линию из окружностей. Во-первых, окружность рисуется с параметром радиус, а не диаметр, поэтому сделал переменную size/2. Во-вторых, из-за специфики рисования окружностей, линия всё равно получается в два раза толще. Т.е. если мы хотим линию толщиной в один пиксель, то линия получится в два пикселя, ну и т.д.
И, я не так задал вопрос, извините. Я имел ввиду не только толщину, но и сглаженность линии. Уже читал про алгоритм Брезенхема и Ву, и даже есть код на фрибейсике на RosettaCode. Но всё это как то мудрёно, поэтому и спросил, может есть что попроще или какая библиотека.
|
|
| |
DarkDemon | Дата: Понедельник, 01.01.2018, 21:10 | Сообщение # 4 |
Полковник
Группа: Друзья
Сообщений: 188
Статус: Offline
| Антиализинг линию разной толщины. Сложновато это кодится, да и медленно будет 100%. Окружности - тоже медленно.
Наверное имеет смысл совместить 2 алгоритма, брезенхем с AA и просто брезенхем. Т.е. сначала идём по брезенхему и рисуем толстую линию, а потом уже края шлифуем. Брезенхем с эмуляцией AA у меня был, а вот толстые линии не кодил. Чисто теоретически по вышеописанному алгоритму - линия получится толще на пол пикселя, но это всё фигня.
Сообщение отредактировал DarkDemon - Понедельник, 01.01.2018, 21:22 |
|
| |
salexeiy | Дата: Среда, 03.01.2018, 18:21 | Сообщение # 5 |
Лейтенант
Группа: Пользователи
Сообщений: 72
Статус: Offline
| Понятно. Не могу найти, где сглаженную линию с помощью OpenGL делали. Конечно, это извращение, ради линии GL использовать, но интересно, как это там реализовано.
Цитата Антиализинг линию разной толщины. Сложновато это кодится, да и медленно будет 100%. Насчёт медленно может и поспорил бы, потому как кругом алгоритм Ву используют, но лично я не пробовал, поэтому на этот счёт спорить не буду.
Ещё можно рисовать и делать толщину линий при помощи Windows API, но, опять же без сглаживания. Продолжаю поиски...
По-моему, нашёл. Есть такая штука, как GDI+, там есть и линии, и толщина, и, что самое главное, сглаживание. Буду изучать.
Сообщение отредактировал salexeiy - Среда, 03.01.2018, 20:30 |
|
| |
DarkDemon | Дата: Воскресенье, 07.01.2018, 16:07 | Сообщение # 6 |
Полковник
Группа: Друзья
Сообщений: 188
Статус: Offline
| Цитата salexeiy ( ) алгоритм Ву Глянул в вики - это пиндец как медленно. Через рекурсию то. Да и толщина линии там никак не учитывается. деление, два умножения, куча округлений. Брезенхем дядь - только брезенхем.
OpenGL - это идеальное решение в данной ситуации. Есть только один нюанс, если у человека в драйвере выключено сглаживание - то в программе будет рисоваться обычная линия.
Цитата salexeiy ( ) Есть такая штука, как GDI+ Что-то мне подсказывает, что это тоже небыстро. Хотя можете попробовать, попытка не пытка.
Сообщение отредактировал DarkDemon - Воскресенье, 07.01.2018, 16:08 |
|
| |
WQ | Дата: Воскресенье, 07.01.2018, 16:19 | Сообщение # 7 |
Полковник
Группа: Проверенные
Сообщений: 215
Статус: Offline
| Я просто пользуюсь библиотекой CD Там все есть
|
|
| |
salexeiy | Дата: Понедельник, 08.01.2018, 12:22 | Сообщение # 8 |
Лейтенант
Группа: Пользователи
Сообщений: 72
Статус: Offline
| Цитата DarkDemon ( ) Что-то мне подсказывает, что это тоже небыстро. Как оказалось, это так и есть. GDI+ полностью сделан на основе Cairo, а это то ещё тормозилово, взять хотя бы тот же Inkscape, к тому же по сложности напоминает WinAPI.
Цитата WQ ( ) Я просто пользуюсь библиотекой CD Есть по ней справка?
|
|
| |
WQ | Дата: Понедельник, 08.01.2018, 14:20 | Сообщение # 9 |
Полковник
Группа: Проверенные
Сообщений: 215
Статус: Offline
| Цитата salexeiy ( ) Есть по ней справка? http://webserver2.tecgraf.puc-rio.br/cd/
Сообщение отредактировал WQ - Понедельник, 08.01.2018, 14:21 |
|
| |
|