[QT4] qpixmap.loadFromData - Problem
-
das habe ich befürchtet...
- momentan lese ich alle Pixel einzeln aus und setzte sie im QImage.
nicht ganz die feine Art...
-
darf man fragen wie du die einzelne Pixel ins QImage packst?
MfG
-
das geht ganz einfach,bei 32bpp mit
void setPixel32bpp(QImage &image, int x, int y, uint red, uint green, uint blue) { uint *ptr = (uint *)image.scanLine(y)+x; *ptr = qRgb(red, green, blue); }
oder bei 8bpp ebend noch einfacher
void setPixel8bpp(QImage &image, int x, int y, unsigned char value) { *(image.scanLine(y)+x)= value; }
aso, ich nutz QT4...
:xmas1:
mfg hilby
-
thx für die Erklärung und wie muss ich die Farbe setzen damit das Bild ein Transparenten Hintergrund bekommt?
Wäre nett wenn du mir da auch noch helfen könntest.
P.S.: ich benutze auch Qt4MfG
-
Transparenten Hintergrund habe ich bisher nur mit PNG-Bildern verwendet, bei denen die Transparenz in den Bildinformationen drinsteht.
und zwar so:
QLabel* mainwidget = new QLabel(); QPixmap pm = QPixmap("hilby.png"); mainwidget->setPixmap(pm); mainwidget->setMask(pm.mask()); // Transparenz-Maske mainwidget->show();
probier das mal aus - sollte funktionieren.
mfg
hilby
-
hmm will ja kein bild laden soll ja intern ein bild "gemalt" werden.
Hier mal ein Test Code wie ich jetzt zur Zeit mache:QImage img(20,20, QImage::Format_Mono); img.fill(255); img.setPixel(2,2, 0); //.. algorithmus
Was ich noch nicht erwähnt habe das Bild hat nur zwei Farben Schwarz und Weiss deswegen ist das Format inmoment auch Mono.
Nun und jetzt will ich halt das der weisse Hintergrund halt Transparent haben.
Hab schon ein bissel mit ein paar Methoden von QImage herumexperimentiert aber selbsgemaltes transparent bekomm ich nicht hin.MfG
-
achso,
dann mach das doch lieber mit einem QPainter
und drawPoint() - der malt doch auf den Hintergrund.und den Painter kannst dann in ein Pixmap speichern, wenn Du eins brauchst...
schönes WE
hilby
-
versteh ich jetzt nicht will ja kein hintergrund malen brauch ja ein QImage später nur das das QImage halt ein transparenten hintergrund haben soll.
dir auch ein schönes WE
MfG
-
ok habs nun hinbekommen mittels qRgba(x,x,x,0) als Farbwert.
MfG
-
cool !