Benutzer mit den meisten Antworten
drucken gdi bmps

Frage
-
schon wieder ein problem beim drucken:
neben text drucke ich auch kleine bilder (eher icons, firmenlogo usw). diese habe ich in der exe als ressource hinterlegt. der code lädt sie zur laufzeit per CBitmap::LoadBitmap. die bilder sind bmp-dateien, im ressourceneditor prima zu sehen. das eine bild hat 24-bit farbtiefe, das andere nur 4.
das drucken selbst läuft per CDC::StretchBlt bzw. TransparentBlt.
hier auf meinem entwicklungsrechner (VC6, Vista) läuft das alles super. trage ich diese exe nun auf einen anderen rechner (xp), werden alle texte ebenfalls gedruckt, aber die grafiken fehlen einfach im ausdruck. ich habs auf mehreren druckern und auch per PDF und XPS-Druckern versucht - die grafiken fehlen.
mit einem ressourcenbetrachter sehe ich, daß die bilder innerhalb der exe als ressource vorhanden sind, also daran liegts nicht.
wenn ich das erzeugte xps-dokument auspacke und ansehe, finde ich auf dem vista-rechner ein verzeichnis, in dem die zu druckenden bilder als png liegen, auf dem xp-rechner fehlen diese bilder.
jemand einen ansatz, woran sowas liegen könnte?
Antworten
-
hat sich erledigt.
für alle, die es noch interessiert: hatte wohl nichts mit xp vs. vista zu tun. man darf die grafik nicht per CBitmap::LoadBitmap laden, weil sie hierdurch geräteabhängig erstellt wird und damit nicht wie sie soll zum drucker geschickt wird.
stattdessen muß man per ::LoadImage eine geräteunabhängige grafik erzeugen udn diese an ein CBitmap::Attach en.
gibt dazu einiges im www zu finden, aber das kürzeste ist vermutlich das hier und es funktioniert prima:
vgl. http://www.programmersheaven.com/2/Art_CPP_1VERIFY (bm.Attach (::LoadImage (::AfxFindResourceHandle( MAKEINTRESOURCE (inBitmapID), RT_BITMAP), MAKEINTRESOURCE (inBitmapID), IMAGE_BITMAP, 0, 0, (LR_DEFAULTSIZE | LR_CREATEDIBSECTION))));
- Als Antwort markiert Robert BreitenhoferModerator Montag, 27. Dezember 2010 13:58
Alle Antworten
-
-
> Und wo ist nun das Problem?
problem ist, daß auf dem xp-rechner keine grafiken gedruckt werden. sie fehlen ganz einfach
sowohl beim drucken zu
- xps, als auch zu
- pdf (mit dem gleichen pdf-erzeuger installiert wie bei vista), als auch auf
- einem richtigen drucker (auf den selben, auf den ich auch von vista aus drucke und wo grafiken gedruckt werden)
-
Die GDI Systeme von Vista und XP unterscheiden sich gravierend.
Zeig mal den Code, mit dem Du solch eine Grafik ausgibst.Versuch noch mal über einen Memory DC zu gehen, in den Du zuerst schreibst und dann nur noch BitBlt verwendest auf den Drucker DC.
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de -
hat sich erledigt.
für alle, die es noch interessiert: hatte wohl nichts mit xp vs. vista zu tun. man darf die grafik nicht per CBitmap::LoadBitmap laden, weil sie hierdurch geräteabhängig erstellt wird und damit nicht wie sie soll zum drucker geschickt wird.
stattdessen muß man per ::LoadImage eine geräteunabhängige grafik erzeugen udn diese an ein CBitmap::Attach en.
gibt dazu einiges im www zu finden, aber das kürzeste ist vermutlich das hier und es funktioniert prima:
vgl. http://www.programmersheaven.com/2/Art_CPP_1VERIFY (bm.Attach (::LoadImage (::AfxFindResourceHandle( MAKEINTRESOURCE (inBitmapID), RT_BITMAP), MAKEINTRESOURCE (inBitmapID), IMAGE_BITMAP, 0, 0, (LR_DEFAULTSIZE | LR_CREATEDIBSECTION))));
- Als Antwort markiert Robert BreitenhoferModerator Montag, 27. Dezember 2010 13:58