Alphablending
Verfasst: 6. Juli 2009 09:30
Hi, ich komme einfach nicht weiter, folgendes:
Ich habe ein QIamge (ARGB) und ich möchte ein Transparentes Rechteck über eine Region des QImages, welches gerade in einem Childwindow angezeigt wird, mittels alphablending drüber zeichnen.
Das Problem ist nun, wenn ich bei meinem QImage den Alphawert auf max (255) setze, kann ich kein transparentes Rechteck mehr darüber zeichnen (also man sieht es da nicht mehr). Setze ich den Alphawert für das QImage auf z.B. 128, dann geht es, aber das QImage ist dann eben auch transparent und es "scheint" der Hintergrund des Fensters durch, das ist natürlich blöd!
Hier mal ein bissl Code:
1.) in meiner ChildWindow-Klasse (geerbt von QMainWindow) im Konstruktor.
In der PaintEvent-Methode zeichne ich:
Und hier erzeuge ich des Rect:
Please, need Help!!
Ich habe ein QIamge (ARGB) und ich möchte ein Transparentes Rechteck über eine Region des QImages, welches gerade in einem Childwindow angezeigt wird, mittels alphablending drüber zeichnen.
Das Problem ist nun, wenn ich bei meinem QImage den Alphawert auf max (255) setze, kann ich kein transparentes Rechteck mehr darüber zeichnen (also man sieht es da nicht mehr). Setze ich den Alphawert für das QImage auf z.B. 128, dann geht es, aber das QImage ist dann eben auch transparent und es "scheint" der Hintergrund des Fensters durch, das ist natürlich blöd!
Hier mal ein bissl Code:
1.) in meiner ChildWindow-Klasse (geerbt von QMainWindow) im Konstruktor.
Code: Alles auswählen
mImage = new QImage(size(),QImage::Format_ARGB32);
Code: Alles auswählen
QPainter imagePainter(mImage);
zeichneBild(&imagePainter);
QPainter painter(this);
QSize size(size());
painter.drawPixmap(0,0,size.width(),size.height(),QPixmap::fromImage(*mImage));
if(mSelectionRectImage)
{
QSize selectRectSize(mSelectionRectImage->size());
painter.drawPixmap(0,0,selectRectSize.width(),selectRectSize.height(),QPixmap::fromImage(*mSelectionRectImage));
}
Code: Alles auswählen
if(mSelectionRectImage==NULL)
mSelectionRectImage = new
QImage(QSize(100,100),QImage::Format_ARGB32_Premultiplied);
QPainter painter(mSelectionRectImage);
QColor color(0,100,0,100);
painter.fillRect(0,0,100,100,color);
update();
Please, need Help!!