通过 QDirectPainter 绘画
任何人都可以详细建议我如何使用 QDirectPainter 类直接在帧缓冲区上绘制小部件。 如果您为我提供一个可行的示例,我会更有帮助。
Can anyone suggest me in detail how to use QDirectPainter
class to paint a widget directly on frame buffer. I would be more helpful if you provide me a working example.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
QDirectPainter 不会也不可能绘制任何东西。 它提供对帧缓冲区的访问,即通过其 QDirectPainter::frameBuffer () 函数。 一旦你有了帧缓冲区的指针,你应该能够直接操作像素。
一种可能有效的方法是通过光栅引擎将您的小部件绘制到 QImage(注意颜色深度、字节顺序、像素位置等以匹配帧缓冲区的位置)。 通过在 QImage 上打开 QPainter 可以轻松实现这一点。 绘制过程完成后,将图像缓冲区的相关部分传输到帧缓冲区。
QDirectPainter does not and can not paint anything. It is there to provide access to the framebuffer, i.e. via its QDirectPainter::frameBuffer () function. Once you have the pointer the framebuffer, you should be able to manipulate the pixels directly.
An approach that might work is to paint your widget to a QImage (careful about the color depth, byte order, pixel placement, etc to match those of your framebuffer) via the raster engine. This is easily possible by opening a QPainter on a QImage. After the painting process is done, blit the relevant part of the image buffer to the framebuffer.