PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Qpixmap varben austauschen?



BeS
18-05-2004, 16:58
Hallo,
ich habe hier ein pixmap das auf dem Bildschrim angezeigt wird und das ich jetzt auch ausdrucken will. Allerdings ist der Hintergrund auf dem Bildschrim dunkel grau und ein Teil der Schrift weiß. Gibt es eine (einfache) Möglichkeit diese Farben zum drucken zu ändern?

Danke!

axeljaeger
18-05-2004, 17:40
Ganz einfach geht das nicht. Schau mal dir mal bitBlt an, wenn du clever blittest, bekommst du vielleicht hin, was du willst. Ansonsten in QImage umwandeln, dann kannst du mit den Pixeln machen, was du willst.

BeS
18-05-2004, 17:51
Danke für die schnelle Antwort!
Ich habe es jetzt hinbekommen ohne große Änderungen das pixmap speziell zum drucken mit anderen Farben zu zeichnen.

Eine Frage hätte ich noch, neben drucken will ich das pixmap auch als Bild speichern können. Nur bekomme ich das mit den Dateiendungen nicht so richtig hin.
Den file-save-dialog habe ich so eingestellt das ich in file-type zwischen jpg und png auswählen kann, kann man die dort ausgewählt Endung jetzt irgendwie automatisch an den angegebenen Dateinamen hängen?


Danke!

anda_skoa
18-05-2004, 19:45
In QFileDialog::getSaveFileName() kannst du als Parameter einen QString Pointer übergeben, der dann den ausgewählten Filter als Inhalt bekommt.

in etwa so


QString selectedFilter;
QString filename = QFileDialog::getSaveFileName(......., &selectedFilter);


Am besten vor dem Anhängen noch prüfen, ob der Dateiname nicht bereits die richtige Endung hat.

Zu den Farben: ist das ein geladendes Bild, oder wird das erzeugt?
In letztem Fall wäre es vielleicht besser, direkt auf den Printer zu zeichnen und gleich die richtigen Farben zu benutzen.

Ciao,
_

BeS
18-05-2004, 20:22
Original geschrieben von anda_skoa
In QFileDialog::getSaveFileName() kannst du als Parameter einen QString Pointer übergeben, der dann den ausgewählten Filter als Inhalt bekommt.

in etwa so


QString selectedFilter;
QString filename = QFileDialog::getSaveFileName(......., &selectedFilter);


Am besten vor dem Anhängen noch prüfen, ob der Dateiname nicht bereits die richtige Endung hat.


ja, genauso habe ich die Filter schon eingestellt. Aber wie bekomme ich jetzt raus was ausgewählt war wenn der filename ohne Endung zurück gekommen ist?



Zu den Farben: ist das ein geladendes Bild, oder wird das erzeugt?
In letztem Fall wäre es vielleicht besser, direkt auf den Printer zu zeichnen und gleich die richtigen Farben zu benutzen.


Es ist ein Bild das während des Programmablaufs erzeugt wird. Ich dachte erst das zuviele Änderungen nötig sind um das pixmap für den Drucker mit anderen Optionen neu zu zeichnen, deswegen meine Frage oben. Mittlerweile habe ich aber eine Möglichkeit gefunden das pixmap für den Drucker extra zu zeichnen indem ich nur zwei kleine if Abfragen in den entsprechenden Funktionen eingebaut habe. Das Problem hat sich also erledigt :)

anda_skoa
18-05-2004, 20:28
Original geschrieben von BeS
ja, genauso habe ich die Filter schon eingestellt. Aber wie bekomme ich jetzt raus was ausgewählt war wenn der filename ohne Endung zurück gekommen ist?


Das hast du missverstanden.
Ein Parameter ist ein String, der die Filter angibt, ein Parameter ist ein Outputparameter, der den vom User gewählten Filter zugewiesen bekommt.

Ciao,
_

BeS
18-05-2004, 20:51
Da war ich wohl etwas zu schnell mit dem lesen :rolleyes:

Auf jeden Fall hat dein Tip mit dem &selectedFilter funktioniert :)

anda_skoa
20-05-2004, 16:17
Fein :)

Hab das selbst noch nicht benutzt, in welchem Format kommt der String da zurück?

Sagen wir der Filter wäre "Textfiles (*.txt);;All files (*.*)"
Kommt dann "Textfiles (*.txt)" oder "*.txt"?

Ciao,
_

BeS
20-05-2004, 21:35
Es kommt immer der komplette Namen des Filters zurück, in deinem Beispiel also "Textfiles (*.txt)" oder "All files (*.*)"