Могу ли я рисовать объекты Qt непосредственно в Win32 DC (Device Context)? - PullRequest
3 голосов
/ 28 мая 2010

Я могу нарисовать объекты Qt в QImage и затем нарисовать изображение в HDC или CDC. Это может снизить производительность нашего приложения. Было бы здорово, если бы я мог рисовать объекты Qt напрямую в Win32 HDC или MFC CDC. Я ожидаю, что есть класс, скажем QWin32Image для очистки, тогда я могу использовать его следующим образом:

QWin32Image image(hdc, 100, 100, Format_ARGB32_Premultiplied);
QPainter painter(&image);
painter.drawText(....);

Возможно ли это для моей мысли? Или есть лучший способ сделать это?

1 Ответ

4 голосов
/ 29 мая 2010

Краткий ответ - Нет. AFAIK в Qt, они абстрагируют весь пользовательский интерфейс для независимости платформы на уровне кода приложения. Qt рисует все свои виджеты в свой собственный буфер, а затем рисует на экране.

Длинный ответ - Квалифицировано Да.

Qt предлагает Библиотека интеграции Win / MFC , которая позволит объектам Qt взаимодействовать с объектами HDC и MFC. Эта библиотека работает хорошо. Но я находил его несколько запутанным, пока не понял, как это работает.

То, что делает эта библиотека, позволяет отображать QWindows в окне MFC или в окне MFC в кадре Qt. Пока вы помните об этом, вы можете заставить его работать.

В качестве альтернативы, QImage.scanLine (0) указывает на все необработанное растровое изображение, которое можно использовать для прямой записи на экран с помощью одной из функций Windows. Несмотря на то, что имя функции - scanline, использование его таким образом указывает на начало необработанного пиксельного буфера.

...