AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Probleme bei Ausdruck von Bitmaps
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme bei Ausdruck von Bitmaps

Ein Thema von Interface11 · begonnen am 13. Apr 2004 · letzter Beitrag vom 12. Feb 2006
Antwort Antwort
Interface11

Registriert seit: 13. Apr 2004
5 Beiträge
 
#1

Probleme bei Ausdruck von Bitmaps

  Alt 13. Apr 2004, 16:49
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
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#2

Re: Probleme bei Ausdruck von Bitmaps

  Alt 13. Apr 2004, 17:18
Ich denke es liegt an StretchDraw. Das macht unter ein Win9x Probleme, wenn Bilder zu groß sind oder werden sollen.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Probleme bei Ausdruck von Bitmaps

  Alt 13. Apr 2004, 18:04
Zitat von Interface11:
rect1.Left := x + 228;
rect1.Top := y - 98;
rect1.Right := x + 792;
rect1.Bottom := y + 462;
Du arbeitest einmal in mm und das andere Mal in Pixeln.
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.
Andreas
  Mit Zitat antworten Zitat
Interface11

Registriert seit: 13. Apr 2004
5 Beiträge
 
#4

Re: Probleme bei Ausdruck von Bitmaps

  Alt 20. Apr 2004, 16:50
Hi habe alles umgerechnet funktioniert leider aber immer noch nicht !
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Probleme bei Ausdruck von Bitmaps

  Alt 20. Apr 2004, 20:30
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:
  // 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};
Wie der Code angibt, aus der borland delphi newsgroup.

MfG
Muetze1
  Mit Zitat antworten Zitat
Interface11

Registriert seit: 13. Apr 2004
5 Beiträge
 
#6

Re: Probleme bei Ausdruck von Bitmaps

  Alt 29. Apr 2004, 10:29
Hi,

Dein Tip war ein voller Erfolg, hab vielen Dank !!

Grüße Dirk
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#7

Re: Probleme bei Ausdruck von Bitmaps

  Alt 30. Jan 2006, 12:55
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.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
aps

Registriert seit: 21. Sep 2003
Ort: Hameln
62 Beiträge
 
Delphi 6 Professional
 
#8

Re: Probleme bei Ausdruck von Bitmaps

  Alt 12. Feb 2006, 20:09
Problem hat sich soeben aufgehoben.
Andreas
Freude am Schauen und Begreifen ist die schönste Gabe der Natur. [Albert Einstein]
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz