3

我可以将 Qt 对象绘制到 QImage,然后将图像绘制到 HDC 或 CDC。这可能会损害我们应用程序的性能。如果我可以将 Qt 对象直接绘制到 Win32 HDC 或 MFC CDC,那就太好了。我希望有一个类,说 QWin32Image 清楚,然后我可以这样使用它:

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

我的想法可能吗?还是有更好的方法来做到这一点?

4

1 回答 1

4

简短的回答 - Qt 中没有 AFAIK,它们在应用程序代码级别抽象了整个 UI 以实现平台独立性。Qt 将其所有小部件绘制到它自己的缓冲区,然后绘制到屏幕上。

长答案 - 合格 是的。

Qt 提供Win/MFC 集成库,允许 Qt 对象与 HDC 和 MFC 对象交互。这个库运行良好。但我发现使用它有点令人困惑,直到我了解它是如何工作的。

这个库的作用是让您在 MFC 窗口或 MFC 窗口中的 Qt 框架中显示 QWindows。只要你牢记这一点,你就可以让它发挥作用。

或者,QImage.scanLine(0) 指向整个原始位图,您可以使用它使用 Windows 函数之一直接写入屏幕。即使函数名称是扫描线,以这种方式使用它也指向原始像素缓冲区的开始。

于 2010-05-29T12:56:27.453 回答