Seite 1 von 1

[gelöst]Ein Pixmap über einem anderen zeichnen mit Alpha

Verfasst: 2. Oktober 2007 18:53
von PhilipLB
Hi,
ich hab hier zwei QPixmaps. Das eine ist ein Bild, das aufgedeckt werden soll, das andere die Schicht, die das Bild verdeckt.
Nun probier ich hier ein bischen rum und mit der Forensuche bin ich auch auf den Alphakanal gestoßen:

Code: Alles auswählen

	overlapAlpha = new QPixmap(picture.size());
	QPainter p2(overlapAlpha);
	QPen pen(QColor(0, 0, 0));
	pen.setWidth(40);
	p2.setPen(pen);
	p2.drawLine(0, 0, 100, 100);
	overlapTiled.setAlphaChannel(overlapAlpha);
Naja, das kompiliert nicht, weil der meint, es gibt setAlphaChannel nicht?!

Und warum funktioniert die folgende Idee nicht?
Dem Pen ne Farbe QColor(0, 0, 0, 0) verpassen und direkt auf dem verdeckenden QPixmap zeichnen.

Verfasst: 2. Oktober 2007 19:08
von Christian81
setAlphaChannel ist Qt3 - gibts in Qt4 nicht -> siehe Doku...

Ich würde es mal damit probieren: http://doc.trolltech.com/4.3/qpainter.h ... nMode-enum

Verfasst: 3. Oktober 2007 18:06
von PhilipLB
Hab's. :)
setAlphaChannel() ist schon ok, hatte bloß -> statt . verwendet...

Code: Alles auswählen

	overlapAlpha = new QPixmap(picture.size());
	QPainter p2(overlapAlpha);
	QBrush fillBrush(QColor(255, 255, 255));
	p2.fillRect(overlapAlpha->rect(), fillBrush);
	QPen pen(QColor(0, 0, 0));
	pen.setWidth(40);
	pen.setCapStyle(Qt::RoundCap);
	p2.setPen(pen);
	p2.drawLine(0, 0, 100, 100);
	p.end();
	overlapTiled->setAlphaChannel(*overlapAlpha);
Ich musste noch den painter, der die Pixmap gemalt hat, mit p.end() beenden und schon ging es. :)