2D CAD приложение в WPF - PullRequest
       55

2D CAD приложение в WPF

3 голосов
/ 07 февраля 2012

Я пытаюсь написать CAD-приложение в WPF (.NET 4.0), которое должно отображать множество 2D точек / линий. Он будет использоваться для отображения CAD-планов целых городов с масштабированием, панорамированием, поворотом и привязкой к точке при наведении мыши.

Прямо сейчас я использую только WPF. Я читаю объекты из файла САПР, рисую их в StreamGeometry, использую их как штрих нового пути и добавляю в холст с несколькими преобразованиями.

Моя проблема в том, что это решение недостаточно хорошо масштабируется. Он отлично работает с небольшими CAD-файлами, но когда я хочу отобразить как половину города (с домами и земельными границами), это очень очень задерживается.

Я также пытался преобразовать свой CAD-файл в изображение, но - разрешение 32000x32000 иногда недостаточно - при уменьшении масштаба линии слишком тонкие.

В конце мне нужно иметь возможность поместить это на холст (2D / 3D) в качестве фона.

Какие мои лучшие варианты здесь?

Спасибо, Никлас

Ответы [ 3 ]

1 голос
/ 07 февраля 2012

wpf не подходит для больших 3d моделей.Боюсь, это слишком медленно.Ваша лучшая ставка - прямая 3d или openGL

. Однако даже при скорости direct3d, openGL, вам все равно нужно будет решить, как отбирать как можно больше полигонов / вершин перед рендерингом сцены, если выпытаясь показать весь город.

Существует большое количество информации об этом (обычно в процессе разработки игры), есть несколько методов, в том числе выбраковка с помощью выстрела, выбраковка ближней и дальней плоскости.

также, поскольку у вас, вероятно, есть статическая сцена, вы можете использовать двоичное пространственное разбиение.

0 голосов
/ 01 августа 2013

Используйте VirtualCanvas, например , этот от Криса Ловетта.

0 голосов
/ 12 июня 2013

Как я понимаю, речь идет о 2D CAD системе в рамках WPF. Большой! Я использую это ...
OpenGL и DirectX всегда находятся в бесконечном цикле OnDraw. Процессор работает все время. WPF / Silverlight 2D - это умная модель.
Да, общее количество элементов (например, примитивов, унаследованных от Shape) должно быть не так много. Но сколько?
Я протестировал собственное приложение (Silverlight). Надеюсь, WPF будет немного быстрее ... Вот мои результаты 2D CAD. Производительность по-прежнему отличная. Каждый луч состоит из нескольких примитивов.

Usual mode of task

Performance test - see the amount of Beams

...