我可以直接将Qt对象绘制到Win32 DC(设备上下文)吗?

时间:2010-05-28 05:29:51

标签: qt mfc winapi qt-mfc-migration

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

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

我的想法有可能吗?或者有更好的方法吗?

1 个答案:

答案 0 :(得分:4)

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

答案很长 - 合格是的。

Qt提供Win/MFC Integration Library,它允许Qt对象与HDC和MFC对象进行交互。这个库确实很好用。但我发现使用它有些令人困惑,直到我明白它是如何工作的。

此库的功能允许您在Qt帧中在MFC窗口或MFC窗口中显示QWindows。只要记住这一点,就可以使它发挥作用。

或者,QImage.scanLine(0)指向可以使用其中一个窗口函数直接写入屏幕的整个原始位图。即使函数名称是scanline,使用它也可以指向原始像素缓冲区的开始。