![]() |
Probleme bei Ausdruck von Bitmaps
Hallo zusammen !
Hier mein Quellcode: image1.picture.LoadfromFile(Query1.fieldbyname('Bi ld1').asstring); image2.picture.LoadfromFile(Query1.fieldbyname('Bi ld1').asstring); pix_mm := Printer.Pagewidth div 214; rect1.TopLeft.x := 14 * pix_mm; rect1.TopLeft.y := 43 * pix_mm; rect1.BottomRight.x := 44 * pix_mm; rect1.BottomRight.y := 72 * pix_mm; canvas.stretchDraw(rect1,image1.picture.Graphic); rect1.Left := x + 228; rect1.Top := y - 98; rect1.Right := x + 792; rect1.Bottom := y + 462; canvas.stretchDraw(rect1,image2.picture.Graphic); Unter Windows NT werden beide Grafiken ohne Probelme gedruckt ! Unter Windows 98 wird die erste Grafik (BMP) mal gedruckt, mal nicht. Habe deshalb zwei Fragen: 1. Was ist hier zu tun, um die Grafiken unter jedem Betriebssystem einwandfrei zu drucken ? 2. Liegt es vielleicht am StretchDraw Befehl ? Vielen Dank und Grüße Dirk :shock: |
Re: Probleme bei Ausdruck von Bitmaps
Ich denke es liegt an StretchDraw. Das macht unter ein Win9x Probleme, wenn Bilder zu groß sind oder werden sollen.
|
Re: Probleme bei Ausdruck von Bitmaps
Zitat:
Du solltest immer im mm-System bleiben.
Delphi-Quellcode:
unit PrtScaling;
{ Printer scaling functions Andreas Schmidt use this functions only between printer.BeginDoc and printer.EndDoc } interface uses Printers; function ConvertMmToPixelsX(const Value:Double):Integer; function ConvertMmToPixelsY(const Value:Double):Integer; function ConvertInchToPixelsX(const Value:Double):Integer; function ConvertInchToPixelsY(const Value:Double):Integer; implementation uses Windows; const mmPerInch = 25.4; function GetPrinterRes(const pobj: TPrinter; Horz: Boolean): integer; var Index: Integer; begin if Horz then Index:=LOGPIXELSX else Index:=LOGPIXELSY; Result:=GetDeviceCaps(pobj.Handle, Index); end; function ConvertMMtoPixelsX(const Value:Double):Integer; begin Result := Round(Value*GetPrinterRes(Printer, True) / mmPerInch); end; function ConvertMMtoPixelsY(const Value:Double):Integer; begin Result := Round(Value*GetPrinterRes(Printer, False) / mmPerInch); end; function ConvertInchtoPixelsX(const Value:Double):Integer; begin Result := Round(Value*GetPrinterRes(Printer, True)); end; function ConvertInchtoPixelsY(const Value:Double):Integer; begin Result := Round(Value*GetPrinterRes(Printer, False)); end; end. |
Re: Probleme bei Ausdruck von Bitmaps
Hi habe alles umgerechnet funktioniert leider aber immer noch nicht ! :shock:
|
Re: Probleme bei Ausdruck von Bitmaps
Moin!
StretchDraw, BitBlt, etc werden nicht von allen Druckertreibern unterstützt - das ist das Problem. Dabei tritt es oft auch schon bei dem gleichen Drucker und unterschiedlichen Windows Versionen auf. Folgender Weg macht das immer:
Code:
Wie der Code angibt, aus der borland delphi newsgroup.
// Based on posting to borland.public.delphi.winapi by Rodney E Geraghty,
// 8/8/97. Used to print bitmap on any Windows printer. PROCEDURE PrintBitmap(Canvas: TCanvas; DestRect: TRect; Bitmap: TBitmap); VAR BitmapHeader: pBitmapInfo; BitmapImage : POINTER; HeaderSize : DWORD; // Use DWORD for compatibility with D3-D5 ImageSize : DWORD; BEGIN GetDIBSizes(Bitmap.Handle, HeaderSize, ImageSize); GetMem(BitmapHeader, HeaderSize); GetMem(BitmapImage, ImageSize); TRY GetDIB(Bitmap.Handle, Bitmap.Palette, BitmapHeader^, BitmapImage^); StretchDIBits(Canvas.Handle, DestRect.Left, DestRect.Top, // Destination Origin DestRect.Right - DestRect.Left, // Destination Width DestRect.Bottom - DestRect.Top, // Destination Height 0, 0, // Source Origin Bitmap.Width, Bitmap.Height, // Source Width & Height BitmapImage, TBitmapInfo(BitmapHeader^), DIB_RGB_COLORS, SRCCOPY) FINALLY FreeMem(BitmapHeader); FreeMem(BitmapImage) END END {PrintBitmap}; MfG Muetze1 |
Re: Probleme bei Ausdruck von Bitmaps
Hi,
Dein Tip war ein voller Erfolg, hab vielen Dank !! Grüße Dirk :-D |
Re: Probleme bei Ausdruck von Bitmaps
der obige code macht bei uns unter winxp probleme. wir drucken schwarz/weiss bitmaps und es kommt manchmal vor das die strechbld eine weiss oder schwarze seite druckt.
ich hab bei uns auf gdi+ umgestellt. der fehler tritt nur auf wenn man viel druckt und ist leider nicht repoduzierbar. |
Re: Probleme bei Ausdruck von Bitmaps
Problem hat sich soeben aufgehoben.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz