Задать вопрос
@miXtik789

Как реализовать отображение чертежей в winForms?

Добрый день! Как реализовать отображение чертежей в winForms? Изначально пробовал через Graphics, но в таком случае при перемещение подлагивало, как лучше реализовать отображение множества объектов в winForms как это реализовано например в AutoCAD?
  • Вопрос задан
  • 122 просмотра
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
@rPman
Вне зависимости от использования библиотек или фреймворка общая идея ускорения вывода большого количества примитивов или просто сложные объекты, есть разные подходы:
* кешировать результат, в твоем случае можно в памяти создать битмап и отрисовывать в него, тогда при перемещении окна просмотра в него перерисовывать объекты не понадобится
недостаток - при большом размере холста (в пикселах) будут повышенные требования к оперативной памяти
* частично кешировать результат, чем то таким занимаются разработчики/движки игр, когда далекие сцены, внешний вид которых не меняется при локальных перемещениях игрока, заменяются на заранее отрендеренный битмап (текстуру) и рисуют простой спрайт
В общем это перераспределение нагрузки между процессором и оперативной памятью, либо ты постоянно перерисовываешь все объекты на сцене либо ты это делаешь реже но хранишь все в памяти
* воспользоваться видеоускорителем, красивого решения именно для c# у тебя не будет, это вообще не подходящий инструмент. Смысл в том что современные видеоускорители, даже если это оффисный, встроенный в процессор, способны отрисовывать миллионы примитивов, но разработка приложения будет похожа на разработку игры, и готовые фрейамворки либо ограничат тебя в возможностях либо из-за того что используешь неподходящий инструмент, ты будешь тратить время на переходы от managed разработки до нативной
погугли .net using gpu acceleration
если ты готов к вендорлоку nvidia посмотри на их движок
Ответ написан
Комментировать
AutoCAD для отрисовки активно использует видеокарту.
Тебе, видимо, надо делать то же самое.

Советую уйти с Winforms хотябы на WPF - там это сделать будет немного проще.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы