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

Alles rund um die Programmierung mit Qt
Antworten
PhilipLB
Beiträge: 13
Registriert: 14. September 2007 01:49

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

Beitrag 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.
Zuletzt geändert von PhilipLB am 3. Oktober 2007 23:54, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
PhilipLB
Beiträge: 13
Registriert: 14. September 2007 01:49

Beitrag 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. :)
Antworten