我希望能做到的效果是改变画笔颜色时不改变原来的画作
时间: 2024-04-12 16:31:35 浏览: 16
明白了,如果您希望在改变画笔颜色时不改变原来的画作,您可以使用两个 `QPainter` 对象:一个用于绘制并显示原来的画作,另一个用于绘制新的画作。
以下是实现该效果的示例代码:
```cpp
QImage canvas(width, height, QImage::Format_RGB32);
canvas.fill(Qt::white); // 填充画布为白色
QPainter painter(&canvas);
// 在 painter 上绘制原来的画作
// ...
// 创建一个新的 QPainter 对象用于绘制新的画作
QPainter newPainter(this);
// 更改画笔颜色
QColor newColor = QColorDialog::getColor(Qt::red, this, tr("颜色对话框"), QColorDialog::ShowAlphaChannel);
newPainter.setPen(newColor);
// 在 newPainter 上绘制新的画作
// ...
// 将新的画作绘制到窗口上的指定区域
newPainter.drawImage(0, 0, canvas);
```
在上述代码中,我们首先创建了一个 `QImage` 对象 `canvas` 作为画布,并用白色填充它。然后,我们创建了一个 `QPainter` 对象 `painter`,并在其上绘制原来的画作。
接下来,我们创建了一个新的 `QPainter` 对象 `newPainter`,并通过 `QColorDialog::getColor` 获取新的画笔颜色。然后,我们将该颜色设置为 `newPainter` 的画笔颜色。
在 `newPainter` 上绘制新的画作。最后,我们使用 `newPainter.drawImage` 将新的画作绘制到窗口上的指定区域。
请根据您的实际需求和代码逻辑进行适当的修改。这只是一个示例,具体的实现方式可能会因您的代码结构而有所不同。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)