Инвертировать или XOR строку в Qt

Я легко рисую сплошную линию в Qt, но теперь мне нужно нарисовать линию, инвертируя исходные пиксели или, возможно, XOR-ing QBrush.

Я прошу эквивалент SetROP2(R2_NOT) или SetROP2(R2_XORPEN) в Win32.

Возможно ли использование Qt? Я хочу сделать это, поэтому я могу легко "раскрыть" его позже.

1 ответ

Вы можете сделать это следующим образом:

QPainter dc(widget);

dc.setCompositionMode(QPainter::RasterOp_SourceXorDestination);
dc.setPen(QColor(0xff, 0xff, 0xff));

dc.drawEllipse(center, r1, r2);

Другие режимы композиции описаны в документации QPainter. Чтобы отменить отдельные графические операции, это должно быть именно то, что вы хотите, однако - просто установите ту же ручку, которую вы использовали в первую очередь, и измените форму.

licensed under cc by-sa 3.0 with attribution.