Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Drucken: Größe von TImage übernehmen? (https://www.delphipraxis.net/74132-drucken-groesse-von-timage-uebernehmen.html)

mlspider 28. Jul 2006 16:56


Drucken: Größe von TImage übernehmen?
 
Ich drucke mir den Inhalt von TImage wie folgt aus:

Delphi-Quellcode:
procedure TVorschau2.Button1Click(Sender: TObject);
var rect : TRect;
begin
 if PrinterSetupDialog1.Execute then begin
 with printer.canvas do begin
  Printer.BeginDoc;
  rect:=Bounds(-10,-10,printer.pagewidth div 2,printer.pageheight div 2);
  StretchDraw(Rect,image1.picture.Graphic);
  Printer.EndDoc;
  end;
end;
Leider wird die Größe von Timage auf dem Druckergebnis nicht beibehalten. Wie könnte man dieses Problem lösen?

SirThornberry 28. Jul 2006 17:03

Re: Dröcken: Größe von TImage übernehmen?
 
und wievern sollte die größe den beibehalten werden? Also welche Größe soll das Bild auf dem Ausdruck haben? Und wie ist das Resultat mit deinem Quelltext?

mlspider 28. Jul 2006 17:08

Re: Dröcken: Größe von TImage übernehmen?
 
Die gesamte Fläche von TImage. Height: 457 Width: 465. Das jetzige Resultat sieht momentan so aus, das die Breite zur Hälfte gestaucht ist.

Der_Unwissende 28. Jul 2006 17:21

Re: Dröcken: Größe von TImage übernehmen?
 
Hi,
du aber das ist doch fast dass, was du dem Drucker sagst.

Zitat:

Zitat von mlspider
Delphi-Quellcode:
  rect:=Bounds(-10,-10,printer.pagewidth div 2,printer.pageheight div 2);
Leider wird die Größe von Timage auf dem Druckergebnis nicht beibehalten. Wie könnte man dieses Problem lösen?

Du legst hier als Größe des Image auf dem Druckercanvas fest, dass dein Bild mit halber Seitenbreite und halber Seitenhöhe ausgedruckt werden soll. Dein Bild ist nahezu quadratisch, eine normale Seite ist dass nicht. Also zerrst du das Bild ordentlich, da das Verhältnis der Seitenhöhe zur Seitenbreite deutlich anders als 1 ist (anders bei deinem Bild!)
Immer noch gezerrt aber etwas besser wäre ein
Delphi-Quellcode:
  rect := Bounds(-10,-10,printer.pagewidth div 2,printer.pagewidth div 2);
So richtig schön wird es aber erst, wenn du ausrechnest wie du es optimal strecken kannst und das Seitenverhältnis gleich lässt.
Desweiteren kannst du hier im Forum noch einiges zum Drucken finden, insbesondere solltest du nach GetDeviceCaps suchen (da kannst du auch den Rand des Druckers bestimmen und die Einheiten festlegen, denn je nach Auflösung ist ein Pixel nicht gleich einem Pixel, was die Größe angeht!)

Gruß Der Unwissende

mlspider 28. Jul 2006 17:24

Re: Dröcken: Größe von TImage übernehmen?
 
Ehrlich gesagt kann ich keinen Unterschied zu meiner Codezeile finden.

Der_Unwissende 28. Jul 2006 17:27

Re: Dröcken: Größe von TImage übernehmen?
 
Der ist auch sehr klein, ich hab zweimal die pageWidth div 2 verwendet. Das ist einfach nur näher an dem eigentlichen Seitenverhältnis dran. Das exakte bekommst du dann mit dem Dreisatz.

mlspider 28. Jul 2006 17:30

Re: Dröcken: Größe von TImage übernehmen?
 
Na nun ist ja alles vorbei. Das ist gut und gerne mehrere Jahre her, wo ich letzmalig einen Dreisatz angewandt hatte.

Der_Unwissende 28. Jul 2006 17:38

Re: Dröcken: Größe von TImage übernehmen?
 
Na so lange wird es schon nicht her sein. Ausserdem sollte man den eh nicht vergessen.

Aber was macht man so schön, wenn man eine Lösung nicht mehr kennt, man leitet sie sich einfach her! Worum es hier geht ist doch eigentlich nur das Verhältnis von Höhe und Breite. Dabei muss einfach nur das Verhältnis von Image.Height zu Image.Width = PageHeight zu PageWidth sein. Die Größe des Image ist dabei fest durch die Grafik gegeben (damit auch das Verhältnis).
Nun hast du die Auswahl, du kannst entweder eine Höhe oder die Breite für das gedruckte Image festlegen. Hier kannst du natürlich dann wieder schauen, was optimal (für ein max. großen Druck) ist.
Sagen wir einfach du legst fest, dass die halbe Seite als Breite dienen soll. Dann hast du ein Gleichsystem mit einer unbekannten (die Höhe des Drucks).
Stell einfach um und du hast
(Image.Height / Image.Width) * PageWidth = PageHeight.
Das ganze machst du nun in Delphi und rundest schön, fertig.

mlspider 28. Jul 2006 17:48

Re: Dröcken: Größe von TImage übernehmen?
 
Oh, wie peinlich. :oops: Bin wieder von selbst drauf gekommen. Danke


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