Einblenden/Ausblenden mit QT

Alles rund um die Programmierung mit Qt
Antworten
bar
Beiträge: 15
Registriert: 12. Oktober 2004 10:25

Einblenden/Ausblenden mit QT

Beitrag von bar »

Hallo,

Zurzeit beschäftige ich damit, die Möglichkeit zu finden die Einblendungs-und Ausblendungseffekte (ähnlich wie bei Power Point) mit Hilfe von Qt zu erstellen.
Ich habe bis jetzt nur diese Effekte mit der Methode setMask() geschafft, aber es ist zu pixelig :(

In meinem Fall wäre es perfekt, wenn ich auf meine Pixmap's den AlphaChannel setzen konnte... Aber sieht ziemlich problematisch aus...

Vielleicht hat sich schon jemand mit diesem Problem auseinander gesetzt?!

Vielen Dank!
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Beschreib mal etwas ausführlicher, was du machen möchtest...
bar
Beiträge: 15
Registriert: 12. Oktober 2004 10:25

Beitrag von bar »

hallo,

danke für die Antwort!

ich habe gestern geschafft!
na ja, ich verwende jetzt für Einblenden und Ausblenden Alpha-Wert von QImage...
nando
Beiträge: 321
Registriert: 28. Oktober 2004 13:16

Beitrag von nando »

Hi,

nur zur Info zum Thema Alpha Werte:

Ab QT4 soll man auch auf 2D Elemente einen Alpha filter setzen koennen.


Gruss,
Nando
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Beitrag von Goos »

nando hat geschrieben:Hi,

nur zur Info zum Thema Alpha Werte:

Ab QT4 soll man auch auf 2D Elemente einen Alpha filter setzen koennen.


Gruss,
Nando
Wie genau meinst das?
Ich war ansich der Meinung, dass QImage ein 2D Elemet ist.

Goos
nando
Beiträge: 321
Registriert: 28. Oktober 2004 13:16

Beitrag von nando »

hi,
ich meine damit z.b

rectangles, circles, lines, text usw.....
Amadeus
Beiträge: 3
Registriert: 4. November 2004 04:38
Kontaktdaten:

Beitrag von Amadeus »

Hi,
kannst Du mal bitte ein bischen erklären, wie du das geschafft hast,
am besten mit dem entspr. Quelltext, das würde mich echt mal interessieren.
bar
Beiträge: 15
Registriert: 12. Oktober 2004 10:25

Beitrag von bar »

Hallo,

ich versuche jetzt zu erklären, vielleicht programmtechnisch habe ich nicht so sauber programmeirt(mir fehlen die Erfahrungen), aber algorithmentechnisch sieht so aus:

1) ein Screenshort von meinem Widget:
mypixmap = QPixmap::grabWidget(mywidget,0,0,size_x,size_y);
2) erzeuge QImage mit AlphaBuffer davon:
myimage->setAlphaBuffer(true);
*myimage = mypixmap.convertToImage();
3) dann erzeuge ich noch ein alpha_Image und überschreibe diesen mit unterschiedlichen Alpha-Werten von myimage (32-Bit, die letzten 8 für Alpha-Wert), dann lasse ich ihn anzeigen:
QImage alpha_image (size_x,size_y,32);
alpha_image.setAlphaBuffer(true);
for(int j =0; j < size_y; j++ ){
for (int i = 0; i < 800; i++){
QRgb pixel;
QRgb p = myimage->pixel(i,j);
pixel = qRgba( qRed(p),qGreen(p),qBlue(p),Alpha_Wert );
alpha_image.setPixel(i,j,pixel);
}
}
4)lasse anzeigen
QPixmap* pix = new QPixmap(alpha_image);
bitBlt(animated_widget,0,0,pix,0,0,size_x,size_y,CopyROP);
5) dann entsprechend ändere ich Alpha-Wert von 0 bis 255;
mit setter und getter-Methoden...
6) Um diesen Verlauf zu erreichen (Alpha-Wert von 0 bis 255), setze ich QTimerEvent, der , wenn Alpha-Wert 255 erreicht hat, gekillt wird.

So habe ich geschrieben, eigentlich sieht relativ gut aus...
Dann kann die unterschiedlichen mathematischen Ansätze benutzt werden um Einblenden/Ausblenden zu optimieren (von der Mitte z.B. vom Bild, oder von oben nach unten und etc)
Antworten