AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi JPEG aus TImage in bestimmter Größe drucken
Thema durchsuchen
Ansicht
Themen-Optionen

JPEG aus TImage in bestimmter Größe drucken

Ein Thema von MCXSC · begonnen am 27. Sep 2007 · letzter Beitrag vom 28. Sep 2007
Antwort Antwort
MCXSC
(Gast)

n/a Beiträge
 
#1

JPEG aus TImage in bestimmter Größe drucken

  Alt 27. Sep 2007, 23:38
Hallo!

Ein Bild drucken, kann man ja mit z.B. folgendem Codeschnipsel:

Delphi-Quellcode:
procedure PrintBitmap(aGraphic: TGraphic, Title: string);
begin
  Printer.Title := Title;
  Printer.BeginDoc;
  Printer.Canvas.Draw(0, 0, aGraphic);
  Printer.EndDoc;
end;
Nun habe ich aber das Problem, dass das Bild meist in seiner Originalgröße ausgedruckt wird, oder aber noch kleiner. Ich habe mich auch schon hier durch die DP gesucht, durch Google gesucht, etc. aber ich finde einfach nichts passendes.

Was ich eigentlich nur will:

Ein Bild aus einer TImage-Komponente so zu drucken, dass es auf dem Papier nachher bestimmte Maße (cm) hat. Ist das Bild in der TImage zu groß, soll es eben auf diese Maße verkleinert, ist es zu klein, vergrößert werden (unproportional).

Aber ich habe bisher nichts passendes dazu gefunden...

MCXSC
  Mit Zitat antworten Zitat
Benutzerbild von peschai
peschai

Registriert seit: 15. Feb 2004
Ort: Göppingen
270 Beiträge
 
Delphi XE5 Professional
 
#2

Re: JPEG aus TImage in bestimmter Größe drucken

  Alt 28. Sep 2007, 13:48
Hallo

Schau dir mal diesen codeschnipsel zum proportionalen resizen an ... nicht beim drucken, aber eventuell hilfts als zündfunke ...

Ein bild als tImage soll so in ein Panel eingeblendet werden, daß es optimal groß proportional dargestellt wird....

Image12.Parent wäre das Panel, wäre in deinem Fall der canvas des blattes zum drucken ... ?

Delphi-Quellcode:
          { JPEGImage }
          ms1.Seek(0, soFromBeginning);
          jpg3.LoadFromStream(ms1);
        
          { Resize }
          if (Image12.Parent.ClientWidth>0) and (jpg3.Width>0) then
            begin
              { Seitenverhältnis Container }
              r1 := (Image12.Parent.ClientHeight/Image12.Parent.ClientWidth);
              { Seitenverhältnis Bild }
              if (jpg3.Width>0)
                then r2 :=(jpg3.Height/jpg3.Width)
                else r2 := 0.0;
              { Container passend zum Bild in Übergeordneten Panel einpassen, damit Stretch automatisch funktioniert }
              if (r1>r2)
                then
                  begin
                    { Container ist im Verhältnis höher als Bild, also auf Breite anpassen }
                    { Faktor damit Bild so breit wie Container wird }
                    r1 := Image12.Parent.ClientWidth/jpg3.Width;
                    Image12.Width := Image12.Parent.ClientWidth;
                    Image12.Left := 0;
                    Image12.Height := Trunc(r1* jpg3.Height);
                    Image12.Top := (Image12.Parent.ClientHeight-Image12.Height) div 2;
                  end
                else
                  begin
                    { Container ist im Verhältnis breiter als Bild, also auf Höhe anpassen }
                    { Faktor damit Bild so hoch wie Container wird }
                    r1 := Image12.Parent.ClientHeight/jpg3.Height;
                    Image12.Height := Image12.Parent.ClientHeight;
                    Image12.Top := 0;
                    Image12.Width := Trunc(r1* jpg3.Width);
                    Image12.Left := (Image12.Parent.ClientWidth-Image12.Width) div 2;
                  end;
              Image12.Picture.Assign(jpg3);
            end;
Peter Schaible
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: JPEG aus TImage in bestimmter Größe drucken

  Alt 28. Sep 2007, 15:00
Hallo,

Dein Drucker hat eine bestimmte Auflösung xxx dpi (dots per inch)
also Punkte pro 2,54 cm.
Du mußt Dein Bild dann so vergrößern oder verkleinern das es die Größe
auf dem Drucker erreicht die Du mit der dpi Angabe berechnet hast.

Beispiel:
  • Drucker: 300dpi
  • Bildgröße: 1800x1200 Bildpunkte

1800 / 300 -> 6 inch -> 6 * 2,54 cm -> ca. 15cm

Wenn Du das Bild dann kleiner haben willst, kannst Du das Bild verkleinern.

Grüße
Klaus
Klaus
  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 09:43 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