gpt4 book ai didi

c++ - QPainter 保存状态

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:58:18 27 4
gpt4 key购买 nike

我有一个 QWidget,我在其中使用 QPainter 对象绘制一些点,但是当调用 update() 方法时,QWidget 的绘制被完全清除。有什么方法可以保存实际状态并只添加点,或者我必须保存每个点并在每次 paintEvent() 调用中绘制它们?基本上,当我按下一个箭头时,我必须在 QWidget 上显示一条线(用于汽车拉力赛)。

最佳答案

除了 SingerOfTheFall 的回答之外,您还可以将所有增量更改绘制到图像中,然后仅在每次更新调用时绘制该图像。

为了处理图像,Qt 有很多类,最重要的是 QImageQPixmap由于它们都是从 QPaintDevice 派生的,因此可以使用 QPainter 直接绘制它们。 QImage 针对直接像素访问和文件 I/O 进行了优化,而 QPixmap 针对在屏幕上显示进行了优化。它没有说哪个更适合绘图,但我会从 QPixmap 开始,看看它的表现如何。

您还可以在另一个“图像”类中绘图,QPicture .但这并不是真正存储渲染结果的图像,而只是记录使用 QPainter 完成的绘制命令,以便稍后轻松回放。因此我认为它的性能应该不会比“真实”图像好多少。但这可能值得一试,特别是如果绘图中涉及更多内容并且仅存储最终图像是不够的。

关于c++ - QPainter 保存状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12740848/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com