Seite 1 von 1

BitBlt: Speichergrenze ?

Verfasst: 22.05.2009 19:12
von sibru
Hallo,

ich benutze zum Drucken Images und API-Funktionen, klappt bei 300DPI auch prima.
Nun muss ich auch mit 600DPI drucken und bekomme ´n Speicherfehler
bei BitBlt (Imagespeicher-->Druckerspeicher).
Gibt´s bei BitBlt ´ne Speichergrenze ?
Oder kennt jemand das Syntom (gleiche Konfiguration, gleicher Drucker:
mit 300DPI {2338 x 3407 Pixel} klappt´s
mit 600DPI {4676 x 6814 Pixel} gibt´s IMA...:shock: ) ?


Sicherheitshalber den Code:

Code: Alles auswählen

Procedure Prt_PagePrint()            ;- Buffer-Bild auf Drucker übertragen, Seite abschließen
  If SetBkMode_(Prt_DC, #OPAQUE)
    
    
    Protected Result= BitBlt_(Prt_DC, 0, 0, Prt_Breit, Prt_Tief, Prt_Hdl, 0, 0, #SRCCOPY )
    
    
    Debug "Prt_dc="+Str(Prt_DC)+", "+Str(Prt_Breit)+" x "+Str(Prt_Tief)+" Prt_Hdl="+Str(Prt_Hdl)+" --> BitBlt="+Str(Result)
    If Result<>0
      If EndPage_(Prt_DC)>0 ;Seite abschliessen
        Prt_ImageReset()  ;Bild löschen (für nächset Seite...)
      Else : MessageRequester("Drucker-Fehler","EndPage"+Str(10)+FehlerText())
      EndIf
    Else : FormatMessage(GetLastError_())
      ;    Else : MessageRequester("Drucker-Fehler "+"BitBlt"+Str(10)+FehlerText())
    EndIf
  Else : MessageRequester("Drucker-Fehler","SetBkMode"+Str(10)+FehlerText())
  EndIf
EndProcedure
Danke

SiBru

Verfasst: 23.05.2009 21:41
von Thorium
Hm das Bild braucht ja 729MB, wenn ich richtig gerechnet hab. Vieleicht ist das einfach zu viel. Vieleicht versuchen das Bild in Abschnitten zu drucken, also nicht alles auf einmal.

Verfasst: 23.05.2009 21:47
von Kaeru Gaman
> wenn ich richtig gerechnet hab

nope. ich komm auf knapp 92MB.


... aber vielleicht ist der druckerspeicher doch noch kleiner?

wenn man das direkt mappen will, muss der doch alles auf einmal fassen können, oder?

Verfasst: 24.05.2009 12:01
von Thorium
Kaeru Gaman hat geschrieben:> wenn ich richtig gerechnet hab

nope. ich komm auf knapp 92MB.
Oh, ja. Ich hab mal Bit und nicht mal Byte gerechnet pro Pixel, fataler Fehler.