Bitmap auf drucker zeichnen
-
Hi,
ich zeichne mitpDC->StretchBlt(0,0,width,height,&dcMem,sLeft,sUp,bitmap.bmWidth, bitmap.bmHeight, SRCCOPY);ein Bitmap auf den Bildschirm, das klappt auch ganz toll!
Wenn ich das Bild jetzt auf den Drucker zeichnen lasse, dann kommt da aber kein Bild raus!
Frage: Was kann ich tun, dass ein Bild rauskommt?
Das Zeichnen erfolgt immer in OnDraw(CDC* pDC) nur einmal benutze ich eben so einen CDC für den Bildschirm und einmal einen für den Drucker!
Ich lasse auf einer 2. Seite noch Text ausgeben, und einige Linien, dass funzt ebenfalls!
Gruss, Tobias
-
Schau mal, welcher MapMode beim DC eingestellt ist
-
ähm, MM_ANISOTROPIC
warum fragst du? Was hab ich da vercheckt?
Der Rest wird ja auch richtig angezeigt...
-
Anleitung zum Drucken mit MFC, siehe: Anhang C von VC++ 6 in 21 Tagen (steht on-line im Net).

http://www.mut.de/media/buecher/VCPLUS6/data/start.htm[ Dieser Beitrag wurde am 20.05.2003 um 19:03 Uhr von Erhard Henkes editiert. ]
-
Hi Erhard,
ja, die Sache ist die:
Ich kann normale Sachen, wie beschrieben, problemlos Drucken, also Linien, Punkte, Texte,..., nur das Bild klappt nicht!
Deswegen such ich Rat dazu!
Gruss, Tobias
-
Frag mal mit GetDeviceCaps ab, ob Dein Drucker bei RASTERCAPS auch RC_STRETCHBLT unterstützt!
P.S.
Bis vor kurzem hatte ein Kumpel von mir auch diese Probleme. Teils, vor allem bei HP-Druckern, wurde von GetDeviceCaps zurückgegeben, dass er RC_BITBLT unterstützt, trotzdem funktionierte es nicht.
-
Hi Rene,
ich werde das heute abend mal testen, wie das so aussieht!
Es hat bei mir weder auf einem HP, noch auf einem Lexmark geklappt! (meine Drucker...)
Was kann ich denn sonst möglichst tolles tun? Bzw. was hat Dein Kumpel getan?
Wäre es eine Möglichkeit, wenn ich irgendwie den Bildschirmausschnitt kopiere und dann zum Drucker sende? Geht das? Also sowas wie "CopyCView...." ?
Gruss, Tobias
-
Hi, wie mach ich das denn so genau? Also das abfragen?
Ich hab mal folgendes versucht:sprintf(a,"%i %i",dcPrint.GetDeviceCaps(RASTERCAPS),RC_STRETCHBLT); MessageBox(a,a,MB_OK);Damit bekomme ich als Ergebnis 28313 2048!
Das bedeutet? Vielleicht dass RASTERCAPS nicht unterstützt wird?
Oder ist die erste Zahl irgendeine Summe aus verschiedenen Werten?
Wie bekomme ich denn dann raus, ob STRETCHBLT unterstützt wird?
Gruss, Tobiaas
-
ist ne Oder-Verknüpfung
-
achso, ok
also ich hab mal die Definition angesehen:
Scheint so etwas wie 0x800 zu sein...
Also müsste ich es mit sowas wie "|" oder "ior(...,..)" (gibts bei Fortran) wohl rausbekommen.
Ich mach das morgen abend mal (heute ist leider schlecht!)
...ich sag dann mal bescheid, was rauskommt!
Gruss, Tobias
-
ok, gibt es eigentlich auch noch ne andere Möglichkeit!?
Was hat denn jetzt Dein Kumpel gemacht?
Gruss, Tobias
-
oder was noch besser wäre:
Kennst Du nicht zufällig einen Artikel, ein Beispiel, ein Buch, zum Thema Drucken, bei dem als Beispiel auch ein Bild ausgedruckt wird?
(z.B. wird in Inside VC++ oder VC++ in 21 Tagen KEIN Bild als Beispiel ausgedruckt!)
Damit wäre mir vermutlich sehr geholfen!!
Gruss, Tobias