PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : QPixmap...?



Miles
25-05-2003, 10:23
Wie setze ich einzelne Pixel einer Pixmap? Und wie lade ich solch eine Pixmap dann auf ein Widget wie zum Beispiel auf ein Label?
Ich hab bisher ein Haupt-Widget, in dem erzeuge ich meine abgeleitete Label-Klasse. Der Konstruktor meiner Labelklasse sieht wie folgt aus:



PPCLabel::PPCLabel(QWidget* parent):QLabel(parent)
{ setGeometry(0,0,256,256);
for(int i=0;i<256*256;i++)
Array[i]=QColor(0,0,0);
pPixmap=new QPixmap(256,256);
// Was jetzt tun?
setPixmap(*pPixmap);
}


Jetzt ist die Frage, wie ich einzelne Pixel setze. Und wie mache ich das mit der Farbtiefe? Muss ich dann für jede Farbtiefe, die eingestellt sein kann, eine eigene Funktion schreiben oder wird das dann irgendwie automatisch konvertiert?

Danke schon im Vorhinein,
Euer Miles. ;-)

anda_skoa
25-05-2003, 12:51
Wenn du das Pixmap sonst nicht brauchst, würde ich eher direkt auf da Label malen.

Oder hast du da auch noch Text drauf?

Ciao,
_

Miles
27-05-2003, 15:41
Stimmt. Ich hätte gleich mit einem QPainter auf mein Label zeichnen können.
Ich habs jetzt auchmal so ausprobiert. Das riesen Problem dabei ist nur, dass das Bild nicht aktuallisiert wird (wenn ich zum Beispiel mit dem Fenster am Bildschirmrand herumfahre).

Mit QPixmap klappts aber jetzt.

anda_skoa
27-05-2003, 18:02
Original geschrieben von Miles
Das riesen Problem dabei ist nur, dass das Bild nicht aktuallisiert wird (wenn ich zum Beispiel mit dem Fenster am Bildschirmrand herumfahre).


Vermutlich das Zeichnen nicht in paintEvent implementiert, richtig?

Ciao,
_

Miles
27-05-2003, 19:59
Ja. Genau das. Aber wenn ich eine dynamische Pixmap anfordere und dann setPixmap() für z.B. mein Label benutze wird das Label schon von alleine neu gezeichnet. Woran liegt das? Auf jeden Fall ich das uuunheimlich praktisch. ;-)

Edit:
Bzw. wenn ich die ich die paintEvent()-Methode jemals überschreiben will, bekommt dann jedes Child immer ein Signal, dass die Methode aufgerufen werden soll?

anda_skoa
27-05-2003, 20:13
paintEvent eines Containers würde ich eher nicht überschreiben.

Aber du kannst ja auch in diesem Fall das Event vor oder nach deinem Code an die Implementation der Basisklasse weiterleiten.

Wenn du ohnehin ein Pixmap hast, bietet sich ein Label natürlich an.

Ciao,
_