Ich versuche, beim Zeichnen von Linien in Qt (keine Bitmaps, aber echte Linien) eine einfache Löschfunktion auszuführen.Zeichnungslinie/Teil davon löschen (Qt/C++)
Ich bin z.B. Zeichnen einer schwarzen Linie in einer "Schicht" und einer Leselinie in einer anderen "Schicht". Dann möchte ich etwas von der roten Linie löschen, also male ich eine weiße Linie. Allerdings möchte ich etwas von der schwarzen Linie sehen können, wo sich der Schnittpunkt befindet.
Dies ist meine Situation:
ich so etwas wie dies tun möchten:
Ich spiele um eine Custom Klasse mit der Erstellung, die von einem erbt QGraphicsLine und implementiert das Paint-Event, um die Kompositionsmodi steuern zu können - aber ich habe noch nicht die richtige Lösung gefunden.
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);
}
Irgendwelche Vorschläge?
Anstatt eine Linie zu zeichnen, zeichne ein ungefülltes Rechteck :) –