AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Drucken: Größe von TImage übernehmen?
Thema durchsuchen
Ansicht
Themen-Optionen

Drucken: Größe von TImage übernehmen?

Ein Thema von mlspider · begonnen am 28. Jul 2006 · letzter Beitrag vom 28. Jul 2006
Antwort Antwort
mlspider

Registriert seit: 22. Okt 2003
Ort: Berlin
661 Beiträge
 
Delphi 7 Enterprise
 
#1

Drucken: Größe von TImage übernehmen?

  Alt 28. Jul 2006, 17:56
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?
Mario
Handbücher haben einen hohen Heizwert!!!

http://geprellte-ebay-kaeufer.de
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Dröcken: Größe von TImage übernehmen?

  Alt 28. Jul 2006, 18:03
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?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
mlspider

Registriert seit: 22. Okt 2003
Ort: Berlin
661 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Dröcken: Größe von TImage übernehmen?

  Alt 28. Jul 2006, 18:08
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.
Mario
Handbücher haben einen hohen Heizwert!!!

http://geprellte-ebay-kaeufer.de
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: Dröcken: Größe von TImage übernehmen?

  Alt 28. Jul 2006, 18:21
Hi,
du aber das ist doch fast dass, was du dem Drucker sagst.

Zitat von mlspider:
  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
  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
  Mit Zitat antworten Zitat
mlspider

Registriert seit: 22. Okt 2003
Ort: Berlin
661 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Dröcken: Größe von TImage übernehmen?

  Alt 28. Jul 2006, 18:24
Ehrlich gesagt kann ich keinen Unterschied zu meiner Codezeile finden.
Mario
Handbücher haben einen hohen Heizwert!!!

http://geprellte-ebay-kaeufer.de
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#6

Re: Dröcken: Größe von TImage übernehmen?

  Alt 28. Jul 2006, 18:27
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.
  Mit Zitat antworten Zitat
mlspider

Registriert seit: 22. Okt 2003
Ort: Berlin
661 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Dröcken: Größe von TImage übernehmen?

  Alt 28. Jul 2006, 18:30
Na nun ist ja alles vorbei. Das ist gut und gerne mehrere Jahre her, wo ich letzmalig einen Dreisatz angewandt hatte.
Mario
Handbücher haben einen hohen Heizwert!!!

http://geprellte-ebay-kaeufer.de
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#8

Re: Dröcken: Größe von TImage übernehmen?

  Alt 28. Jul 2006, 18:38
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.
  Mit Zitat antworten Zitat
mlspider

Registriert seit: 22. Okt 2003
Ort: Berlin
661 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Dröcken: Größe von TImage übernehmen?

  Alt 28. Jul 2006, 18:48
Oh, wie peinlich. Bin wieder von selbst drauf gekommen. Danke
Mario
Handbücher haben einen hohen Heizwert!!!

http://geprellte-ebay-kaeufer.de
  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 18:06 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