Просмотр полной версии : Рисование с помощью WinAPI
Есть проект на с++, без mfc (не люблю я его).
Есть задача: создать некий объект на форме (в моем случае диалоговое окно) который бы служил "графическим дисплеем", на котором можно рисовать примитивы и выводить изображения.
Фактически аналог волкеровской "Map".
С устройством DC знаком и использую.
Но немного в ступоре.
Кто-то знаком каким образом строится волкеровское отображения карты?
Там ведь на обычном Api написано.
Мне интересная общая схема взаимодействия.
В своей реализации пока рисую на самом диалоге, с определнным интервалом, и всеравно не достигаю той "идеальной" картинки, что выходит у волкера, даже с использованием второстепенной буферизации.
Кто делал "вьюпорты", дайте совет. :)
Добавлено через 1 час 0 минут
И сразу, заодно: GDI или GDI+ ? :)
всеравно не достигаю той "идеальной" картинки, что выходит у волкера, даже с использованием второстепенной буферизациипо каким параметрам не достигаешь?)
рисуешь надеюсь сначала в буфере?
ЗЫ а вообще рисовать лучше с помощью какого нить стороннего решения, GDI и GDI+ довольно тормознутые, и расчитаны на рисование интерфейса обычного приложения с небольшими рюшечками, карты типа валкеровской ими медленно рисуются...
ЗЗЫ а хотя я тут подумал, ты про объекты на карте или саму карту-ландшафт?, если про ландшафт который при масштабировании курочиться то можно просто на канве на которой рисуешь включить сглаживание, только не помню как и кода под рукой нет
ЗЗЗЫ GDI+ просто даёт больше красивостей и эффектов по сравнению с GDI
Угу, в буфер, после чего копирую содержимое через BitBtl в нужную область.
Но иногда, все же происходят мерцания картинки.
Уверен, что из-за непродуманного мною использования функции InvalidateRect. Но пока так и не нашел красивого решения. =)
Добавлено через 2 минуты
Наткнулся на парочку интересных ссылок, изучаю.
GDI+: графика нового поколения - Часть 1. Краткое знакомство (http://www.rsdn.ru/article/gdi/gdiplus1.xml)
GDI+: графика нового поколения - Часть2. Работа с растрами и графическими файлами (http://www.rsdn.ru/article/gdi/gdiplus2mag.xml)
GDI+: графика нового поколения - Часть 3. Построение векторных изображений (http://www.rsdn.ru/article/gdi/gdiplus3.xml)
по каким параметрам не достигаешь?)
рисуешь надеюсь сначала в буфере?
ЗЫ а вообще рисовать лучше с помощью какого нить стороннего решения, GDI и GDI+ довольно тормознутые, и расчитаны на рисование интерфейса обычного приложения с небольшими рюшечками, карты типа валкеровской ими медленно рисуются...
ЗЗЫ а хотя я тут подумал, ты про объекты на карте или саму карту-ландшафт?, если про ландшафт который при масштабировании курочиться то можно просто на канве на которой рисуешь включить сглаживание, только не помню как и кода под рукой нет
ЗЗЗЫ GDI+ просто даёт больше красивостей и эффектов по сравнению с GDI
че там блитнуть карту и нарисовать пару десятков квадратиков и текста.
GDI легко потащит.
да.. если верно помню класс окна должен быть создан с
WNDCLASS.hbrBackground = 0; чтобы при каждом инвалидате не перерисоввывать бакграунд, иначе будет мерцание)))
да.. если верно помню класс окна должен быть создан с
WNDCLASS.hbrBackground = 0; чтобы при каждом инвалидате не перерисоввывать бакграунд, иначе будет мерцание)))
Вот! Упустил эту штучку. Спасибо.
Вообщем построил простой примерчик для себя, и вроде он пока реализует необходимые требования.
Обновление области (как и изменения объектов, хотя в рабочем примере данные будут браться из совсем других уже сформированных массивов) сделал по таймеру, каждые 100 мс. Примерно 10 кадр.\с.
Выкладываю тестовик, может быть кому интересно будет.
Желающие могут раскритиковать и поправить.
З.Ы. Подключил к этому делу GDI+, удобный он. :)
1486
vBulletin® v3.6.11, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot