在Qt中繪製行時,我嘗試完成一個簡單的擦除功能(不是位圖,而是實際行)。繪圖行/擦除部分(Qt/C++)
我是例如在一個「層」中繪製黑色線,在另一個「層」中繪製讀取線。然後我想抹掉一些紅線,所以我畫了一條白線。但是我希望能夠看到相交處的一些黑線。
這是我的情況:
我要完成這樣的事情:
我一直在創建從繼承的customline類玩弄QGraphicsLine並實現繪畫事件以便能夠控制合成模式 - 但我還沒有找到正確的解決方案。
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
_scene = new QGraphicsScene(this);
ui->graphicsView->setScene(_scene);
_blackPen = QPen(Qt::black);
_blackPen.setWidth(40);
_redPen = QPen(Qt::red);;
_redPen.setWidth(40);
_eraserPen = QPen(Qt::white);
_eraserPen.setWidth(10);
_scene->addItem(new CustomLine(0,0,100,100, _blackPen, QPainter::CompositionMode_Source));
_scene->addItem(new CustomLine(0,100,100,100, _redPen, QPainter::CompositionMode_Source));
_scene->addItem(new CustomLine(0,100,100,100, _eraserPen, QPainter::CompositionMode_Source));
}
#include "customline.h"
#include <QPainter>
CustomLine::CustomLine(qreal x, qreal y, qreal x2, qreal y2, QPen &pen, QPainter::CompositionMode mode)
{
_x = x;
_y = y;
_x2 = x2;
_y2 = y2;
_pen = pen;
_mode = mode;
}
void CustomLine::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
painter->setPen(_pen);
painter->setCompositionMode(_mode);
painter->drawLine(_x,_y, _x2, _y2);
}
有什麼建議嗎?
而不是繪製一條線,繪製一個未填充的矩形:) –