![]() |
Ответ: Ошибка синтаксиса.
2odd: Кстати, погуглив понял, что из того самого 2DGraphics возможно установить только два типа линий: SOLID и DOTED. Как я понимаю, SOLID это толщина в 3 пикселя, причем скорее всего рисуют в самом классе по тому же Брезенхему, как plot(x-1,y); plot (x,y); plot(x+1,y) - особо не заморачиваясь. Могу ошибаться конечно, но что-то мне подсказывает....
Есть еще отдельные библиотеки(или как там в яве), писаные сторонними товарищами, но это примерно те-же костыли, как и у меня. Возможно чуть быстрее ибо нативно на яве. Но принцип такой-же. Также начиная с MIDP2.0 есть вроде-как стандартная функция рисования закрашенных треугольников (UPD: ну да, например здесь уже пробегала в lib_gfx например). Можно мою процедуру fillrectangle заменить на нее, на MIDP2 будет наверно быстрее, с другой стороны на MIDP1 работать не будет вообще. |
Ответ: Отрисовка толстых линий
MIDP 1.0 скоро уйдет в историю как и старые профили мидлетов (не даром я их назвал "Под старину"), так что не стоит особо бояться проблем с совместимостью.
|
Ответ: Ошибка синтаксиса.
Вложений: 1
Вот вроде бы рабочий мой вариант:
Цитата:
АПД:Нужна библиотека Lib_gfx; А вообще, вот Все библиотеки(Вообще все)! |
Ответ: Отрисовка толстых линий
Как доведете до блеска алгоритм, я его тогда реализую на Java в виде отдельной библиотеки. Без проблем. Или добавлю функцию рисования толстых линий в Lib_gfx.
|
Ответ: Отрисовка толстых линий
Вложений: 1
Сегодня... Где-то в 2 часа ночи я закончил алгоритм. Вроде всё верно, фуууф...
ОНО РАБОТАЕТ! Цитата:
|
Ответ: Отрисовка толстых линий
Нет, нормально. Больше вряд ли сожмется. Можно конвертировать в либу.
Ждите обновления библиотеки LIb_gfx |
Ответ: Отрисовка толстых линий
Можно ещё сильнее!(наверное)! xa,ya,xb и тд не надо делать реалом(Ставим Инт)!
после нахождения син и кос: a:=abs(trunc(x1-x2));//катит у b:=abs(trunc(y1-y2));//катит х c:=(sqrt(a*a+b*b));//гипотенуза cos:=(b/c);//cosB sin:=(a/c);//sinB угол против стороны У if (x2-x1<0)xor(y1-y2<0) then cos:=-cos; cosadd:=trunc(cos*h); sinadd:=trunc(sin*h); xa:=x1+cosadd;// ya:=y1+sinadd;// Переносим точки, так xb:=x2+cosadd;// чтобы линия была параллельна... ... ... FillTriangle(xa,ya,xb,yb,xc,yc); FillTriangle(xc,yc,xd,yd,xb,yb); end; Но там баги с округлением((( |
Ответ: Отрисовка толстых линий
odd сделал скачай последьнюю версию lib_gfx
|
Ответ: Отрисовка толстых линий
Цитата:
|
Ответ: Отрисовка толстых линий
Цитата:
|
Ответ: Отрисовка толстых линий
А есть готовое решение для рисования линий со сглаженными краями (antialiasing)?
|
Ответ: Отрисовка толстых линий
Цитата:
Однако надо не линиями пользоваться, а векторами(вершинами). Если есть угол, то нужно его найти функцией atan2(y,x)! Вроде в MidletPascal 3.3 есть такая возможность. Так, ну ещё надо сделать вид центрирования это четырёхугольника(из векторов) - надо половину необходимой ширины отделить на каждую вершину разрывая углы на -90 и 90... Сложно. |
Часовой пояс GMT +4, время: 21:40. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot