Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TImage im Querformat drucken (https://www.delphipraxis.net/105799-timage-im-querformat-drucken.html)

soapy 30. Dez 2007 13:03


TImage im Querformat drucken
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Delphi-Gemeinde

Ich habe ein Problem.
Und zwar habe ich ein Programm geschrieben, das lineare Funktionen berechnet und diese dann ausdruckt.
Das Programm errechnet die lineare Funktion, und stellt sie in einem TImage dar, das ich zusätzlich noch mit einem Koordinatensystem ausgestattet habe.
So klappt alles einwandfrei, druckt auch aus aber leider im Hochformat, sodass immer nur ein Teil der linearen Funktion und des Koordinatensystems angezeigt wird.

Das ist meine Druckroutine:

Delphi-Quellcode:
with Printer do
  begin
    BeginDoc;
    try
      ScaleX := GetDeviceCaps(Handle, logPixelsX) div PixelsPerInch;
      ScaleY := GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch;
      RR := Rect(0, 0, Koordinatensystem.picture.Width * scaleX, Koordinatensystem.Picture.Height * ScaleY);
      Canvas.StretchDraw(RR, Koordinatensystem.Picture.Graphic);
    finally
      EndDoc;  //Methode EndDoc beendet den aktuellen Druckauftrag und schließt die
    end;
end;
Wie kann ich nun einstellen, dass der Drucker das TImage im Querformat ausdruckt?

Und zum Schluss noch das Programm für euch:

bitsetter 30. Dez 2007 17:14

Re: TImage im Querformat drucken
 
Hallo,

wenn du in deinem TImage auf das Bitmap zeichnest, könntest du das Bild mit PlgBlt() drucken.
Delphi-Quellcode:
var
  Points: array[0..2] of TPoint;
  scaleX, scaleY: integer;
begin
  Printer.BeginDoc;
  try
    with Koordinatensystem do
    begin
      ScaleX := GetDeviceCaps(Printer.Handle, logPixelsX) div PixelsPerInch;
      ScaleY := GetDeviceCaps(Printer.Handle, logPixelsY) div PixelsPerInch;
      Points[1] := Point(Picture.Graphic.Height* scaleX, Picture.Graphic.Width* scaleY);//rechts oben
      Points[0] := Point(Picture.Graphic.Height* scaleX, 0);//links oben
      Points[2] := Point(0, 0);//links unten
      PlgBlt(Printer.Canvas.Handle, Points, Picture.Bitmap.Canvas.Handle, 0, 0, Picture.Graphic.Width,
        Picture.Graphic.Height, 0, 0, 0);
    end;
  finally
    Printer.EndDoc;  
  end;

soapy 30. Dez 2007 17:52

Re: TImage im Querformat drucken
 
Ich habs jetzt mit ein bisschen Hilfe so gelöst:

Delphi-Quellcode:
var
  ScaleX, ScaleY: Integer;
  RR: TRect;
begin

begin
  with Printer do
  begin
    BeginDoc;
    try
      ScaleX := GetDeviceCaps(Handle, logPixelsX) div PixelsPerInch;
      ScaleY := GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch;
      RR := Rect(0, 0, Koordinatensystem.picture.Width * scaleX, Koordinatensystem.Picture.Height * ScaleY);
      Canvas.StretchDraw(RR, Koordinatensystem.Picture.Graphic);
    finally
      EndDoc;
    end;
  Orientation :=poLandscape; //das hat gefehlt... Jetzt fehlts nicht mehr *freu*
  end;
end;
Gruß
Soapy

Larsi 30. Dez 2007 19:24

Re: TImage im Querformat drucken
 
Herzlich Willkommen in der DP :dp:

soapy 30. Dez 2007 19:53

Re: TImage im Querformat drucken
 
Dankeschön...


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 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