QPainter 异或绘制屏幕图形
时间: 2023-06-29 09:06:13 浏览: 161
QPainter 的异或绘制是一种特殊的绘制方式,它可以将已有的图形与新绘制的图形进行异或运算,从而实现一些特殊的效果。
在 Qt 中,可以通过设置 QPainter 的 CompositionMode 属性为 QPainter::RasterOp_Xor 来启用异或绘制模式。具体实现方式如下:
```c++
QPainter painter(this);
painter.setCompositionMode(QPainter::RasterOp_Xor);
painter.setPen(QPen(Qt::red, 2));
painter.drawLine(0, 0, width(), height());
```
上述代码实现了在窗口中绘制一条红色的对角线,并且该线条与窗口中已有的图形进行异或运算。需要注意的是,由于异或运算的特性,当多次绘制同一个图形时,其效果将被抵消,因此需要在每次绘制前清空窗口。
```c++
QPainter painter(this);
painter.setCompositionMode(QPainter::RasterOp_Xor);
painter.setPen(QPen(Qt::red, 2));
painter.drawLine(0, 0, width(), height());
// 清空窗口
painter.setCompositionMode(QPainter::CompositionMode_Clear);
painter.fillRect(0, 0, width(), height(), Qt::SolidPattern);
```
上述代码实现了在窗口中绘制一条红色的对角线,并在下一次绘制前清空窗口。这样,每次绘制时都能看到新的异或效果。
阅读全文