Как улучшить эффективность рисования большого количества объектов с помощью GDI или Qt - PullRequest
0 голосов
/ 28 апреля 2020

Я создал программное обеспечение, подобное AutoCAD, которое может читать и показывать файлы DWG и рисовать линии или кривые поверх фона DWG. И я могу использовать колесо мыши для увеличения или уменьшения масштаба чертежа.

Теперь я сталкиваюсь с проблемой эффективности чертежа и не могу найти решение, я использую MF C GDI для рисования объектов, и я уже используйте двойной буфер, чтобы избежать мерцания, и я также использую клипбокс, чтобы избежать рисования невидимых объектов. С этим решением, это нормально для небольших файлов DWG. Но когда речь идет о больших файлах DWG, например, в файле DWG более 200 000 строк, время рисования этих объектов с помощью GDI составляет около 2,0 с, а если я использую колесо мыши для увеличения или уменьшения масштаба, программное обеспечение будет заморожен на несколько секунд.

Так что я хотел бы знать, есть ли какие-то решения для этой проблемы. Будет оценено это, если кто-то мог дать мне некоторую подсказку. Спасибо за продвижение.

1 Ответ

0 голосов
/ 28 апреля 2020

Я считаю, что единственно возможное решение - использовать DirectX или Direct2D для отображения такого количества данных. Различие этих технологий описано в статье Сравнение аппаратного ускорения Direct2D и GDI . Суть в том, что GDI использует CPU, а Direct2D использует GPU. Из-за этого просто невозможно заставить GDI отображать огромное количество объектов. В противоположность этому, я столкнулся с проблемой, когда рендеринг Direct2D выполнялся ЦП, из-за некоторых проблем с драйверами. В этом случае Direct2D рендеринг был таким же медленным, как и GDI.

...