Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.16;
Скачать: CL | DM;

Вниз

Как нанести условн.знаки на полигон?Векторная карта на DC, ...   Найти похожие ветки 

 
Petro   (2004-02-16 10:43) [0]

Как нанести условные знаки на полигон?, Векторная карта на DC, есть полилиния..
================================
Надо, к примеру, вместо полилинии нарисовать железную дорогу.
- Может копировать растровый кусок? Но как скорость и что делать на углах линии.
- Может сделать через регионы и заливки?
- Может мдти по линии и рисовать векторную связку простых объектов (шпала, рельс,...)?
Всего 3-4 тысячи точек в линии и 2-4 тысячи линий.
При простой Win32 API полилинии сейчас рисуется окно ~4 секунды.


 
CyberStorm   (2004-02-16 14:21) [1]

Тебе поможет LineDDA - CallBack функция рисования линии в GDI.
Вызывается при каждой отрисовке точек линии, вместо точек можно выводить все что угодно в переданных GDI координатах


 
Petro   (2004-02-16 15:21) [2]

Да, я писал что-то подобное, когда нужно было "по пути" между точкой А и Б проверять цвет подложки - растра.
Т.е. Вы предлагаете её использовать
- Есть битмап-кусок железной дороги длиной L=15пикс.
- Поочерёдно на каждой точке вызывается LIne... и при удалённости от старта кратно L рисуем кусок дороги. Угол поворота у нас есть Pnt1 и Pnt2.
- При совпадении координат с концом линии делаем обрезку лишнего куска. Правда как эффективно обрезать - по перпендикуляру определяем габарит куска полилинии?
======
Или второй вариант то-же, но рисуем векторные шпалы-прямоугольники с заливкой?


 
Petro   (2004-01-23 13:35) [3]

ММда. Не так просто решается задачка.
При алгоритме состоавления полилинии из кусков растровых не выходит "ровно без стыков их уложить". При подстановке 360 градусов- вариантов картинок вероятно получается + - 1-2 градуса расхождение и куски ложаться на отрезок не ровно.
Т.к. длина куска равна 40 пикселей, то на этом расстоянии из-за растрирования всегда будет ошибка определения направления в градусах на 1-3 градуса. Что даёт больщую ступенчатость при укладке.
Кроме того, например при шаблоне - через каждые 5 пикселей - зазубрины должны учитывать - где "ложили зазубрину". На предыдущем отрезке полилинии. Не очень получается просто визуализировать полилинию методом растров а не векторных рисунков.
========================
Попутный вопрос - Кто знает где найти алгоритмы отсечения отрезков по экрану?
В GDI+ нет случайно?
Очень мало библиотек именно по векторам и векторному рисованию :((.


 
CyberStorm   (2004-02-25 20:27) [4]

Угу, очень мало, потому что это достаточно сложная задача - создание качественного векторного редактора

Скоро начну заниматься тем же что и вы - созданием стилевых линий, есть один интересный вариант с использованием Path в GDI - например пакет COREL как раз похоже использует траектории при построении линий


 
Petro   (2004-02-26 11:19) [5]

CyberStorm!
Будет какая инфа, ты уж черкни пару строк kpetro_собака_mail.ru.
Я думаю за неделю сделаю комбинированный вариант. Стиль состоящий как из вектора, так и из растровых маленьких вставок в линию - регулярных элементов.
LineDDA что предложил ты и используется в векторном редакторе (мне он нравится) CADSyS4. Он есть у меня с исходниками. Работает довольно быстро, но я добавлю в него в DDA отрисовку растровых вставок. Например у железной дороги это шпалы. Для регулярных элементов не соединённых между собой это подходит. А сами рельсы рисовать буду вектором (без ступенек получается) и дважды (есть функция, которая строит полигон вокруг полилинии).
Пользователь может составить линию какую захочет.
Есть обрезка линий окном, но надо перевести с С++ (уйдёт какое-то время). И теория и алгоритмы на сайте Algo. Надо будет вышлю.
===============
Ещё есть мнение Сишников, что в DirectDraw это делать быстрее, т.к. он работает быстрее GDI. Вот вопрос? Я думал. что DirX это просто обёртка вокруг GDI.
===================
Будут примеры Delphi и C++ про Path плиз.
Петро.


 
CyberStorm   (2004-02-26 19:18) [6]

ОК, сейчас сам разбираюсь, если что получится сообщу



Страницы: 1 вся ветка

Текущий архив: 2004.05.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.052 c
4-1079731294
SeregaT
2004-03-20 00:21
2004.05.16
Пошаговый отладчик


3-1082550768
}|{yk
2004-04-21 16:32
2004.05.16
n раз возникает событие OnNewRecord


7-1080809595
Tornado
2004-04-01 12:53
2004.05.16
Диалог


1-1083154533
KillOfCats
2004-04-28 16:15
2004.05.16
Работа с текстовыми файлами


8-1077019218
Qwer
2004-02-17 15:00
2004.05.16
Слои