alpha transparent - pixel auf pixel alpha wert behalten

Alles rund um die Programmierung mit Qt
Antworten
mentizm
Beiträge: 3
Registriert: 1. März 2011 14:52

alpha transparent - pixel auf pixel alpha wert behalten

Beitrag von mentizm »

Hallo,

ich habe folgendes problem ich habe ein PAINTEVENT, lade ein QPixmap und male darauf rum.

painter.setPen( QPen( QColor( 255, 0, 0, "60"), 50) );
painter.drawPoint( x, y );

habe einen mousMoveEvent, ich will nämlich bei gedrückter maustaste "wie bei MS PAINT" ein wenig auf meinem QPixmap rummalen.

Das klappt auch alles ... nun zu meinem Problem:

Wenn sich die linien kreuzen, habe ich an der stelle keine TRANSPARENT="60" sondern QT addiert die werte, so dass die stelle undurchsichtiger wird.

Gibt es eine Möglichkeit das zu umgehen? ich möchte gerne, wenn ich mit meinen stifft 100 mal über den gleichen Punkt fahre, dass die transparenz trotzdem "60" bleibt!

gruß mentizm
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Das ist doch auch das normalerweise erwartete Verhalten.

Ansonsten könntest du noch ein bischen mit QPainter::CompositionMode herumspielen.
mentizm
Beiträge: 3
Registriert: 1. März 2011 14:52

rückgängig machen...

Beitrag von mentizm »

hallo brauche dringend hilfe, ich dreh noch durch.

habe das problem oben gelöst bekommen, d.h. ich habe das addieren des alpha wertes umgehen können.

nun habe ich ein neues problem ... REVERSE ... ich habe ein qimage, wo ich linen drauf male.

die linien habe eine alpha-transparenz. d.h linie kreuzt line ... schnittpunkt wird dunkler (oder die transparenz nimmt ab).

ABER MEIN PROG MACHT ES NICHT MEHR ... er malt lienen aber ohne den alpha wert, dem ich ihm gegeben habe. ich dreh noch durch ... son hin und her mit dem mist.

bitte um hilfe was ich da falsch mache ... code kommt!
mentizm
Beiträge: 3
Registriert: 1. März 2011 14:52

Beitrag von mentizm »

Code: Alles auswählen

VisualParallelCoordinates::VisualParallelCoordinates(QWidget *parent) : QWidget(parent)
{
        //setBackgroundRole(QPalette::Base);

        //set QImages:
        pcLayer = QImage( widthPc+1, heightPc+1, QImage::Format_ARGB32);
        cleanImg = QImage( widthPc+1, heightPc+1, QImage::Format_ARGB32);
        brushImg = cleanImg.copy( 0, 0, widthPc+1, heightPc+1 );
        lineLayer = cleanImg.copy( 0, 0, widthPc+1, heightPc+1 );

	// set Colors:
	pcPenColor = qRgba( 0,0,0,50 );

	// set Pens:
	pcPen.setWidth( 2 );
	pcPen.setColor( pcPenColor );

}


void VisualParallelCoordinates::paintEvent(QPaintEvent *event)
{
	QPainter pcLayerPainter( this );
	pcLayerPainter.setPen( pcPen );
	pcLayerPainter.drawImage( 0, 0, pcLayer );
	//drawPcLayer( pcLayerPainter );

	pcLayerPainter.drawLine( 100, 200 , 200, 200 );
	pcLayerPainter.drawLine( 150, 150 , 300, 150 );
	pcLayerPainter.drawLine( 300, 400 , 150, 250 );
	pcLayerPainter.drawLine( 10, 500 , 450, 50 );

}
Antworten