Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Вниз

Как нанести условн.знаки на полигон?Векторная карта на 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 вся ветка

Форум: "Media";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.034 c
1-1083500489
AndrewVolkov
2004-05-02 16:21
2004.05.16
Какой-то странный глюк при работе с тхт файлом


3-1082631297
Top100
2004-04-22 14:54
2004.05.16
Экспорт данных из БД Оракла в таблицу Paradox


1-1083057757
ByPass
2004-04-27 13:22
2004.05.16
Memory Mapped Port


1-1083579824
Denis_Visma
2004-05-03 14:23
2004.05.16
Выделить итем в DBLookUpComboBox


1-1083224767
killer
2004-04-29 11:46
2004.05.16
Кнопка в StringGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский