Einzelnen Beitrag anzeigen

MeierZwoo

Registriert seit: 3. Dez 2012
106 Beiträge
 
#8

AW: ChartView drucken

  Alt 30. Dez 2012, 11:03
Ich weiß, daß Pozentrechnung, Verhältnisrechnung und Dreisatz (alles dasselbe) das schwierigste im Leben ist - aber auch das einzige aus der Schul-Mathe, was man im Leben wirklich braucht

Um eine Grafik (hier BMP) mit canvas proportional auf einem Endgerät (Bildschirm, Drucker ...) auszugeben, müssen die Zielabmessungen BxH auch dieselben Proportionen wie die der Quelle (deine BMP) haben.

Du hast als Quell-Abmessungen bmp.Width und bmp.Height.
Die Zielabmessungen sind ...StretchDraw(Bounds(Einfx,Einfy,Zielbreite,Zielhöhe)...

Die Bedingung für proportionale Ausgabe ist:
bmp.Width / bmp.Height = Zielbreite / Zielhöhe
in den jeweiligen Einheiten (s.a. Angehängte Abb.).

1)
Normalerweise gibt man eine Ziel-Abmessung vor, z.B. die Breite. Dann muss die Höhe aus den Proportionen errechnet werden:

Aus bmp.Width / bmp.Height = Zielbreite / Zielhöhe folgt
Zielhöhe = Zielbreite * bmp.Height / bmp.Width

also Printer.Canvas.StretchDraw(Bounds(Einfx,Einfy,Ziel höhe,Zielbreite * bmp.Height div bmp.Width), bmp);

oder Printer.Canvas.StretchDraw(Bounds(2000,2000,2000,2 000 * bmp.Height div bmp.Width), bmp);

(Bei Höhe als Vorgabe umgekehrt).

2)
... kann man auch einen Vergrößerungs/Verkleinerungsfaktor vorgeben, dann ist
Zielbreite = bmp.Width * Faktor
Zielhöhe = bmp.Height * Faktor

3)
... oder 1:1 Ausgabe
Zielbreite = bmp.Width
Zielhöhe = bmp.Height

Nur: beide Werte des Zieles willkürlich vorgeben stretcht das Bild eben in diese Vorgaben und es wird verzerrt/gestretcht. Deshalb heißt die Procedure auch StretchDraw, weil sie das Bild eben gnadenlos an die Vorgabewerte anpaßt (s.a. Angehängte Abb.).

Anm: Bezeichnungen wie "Zielhöhe" etc. müssen logo in Syntaxgerechte Bezeichner umgesetzt werden
Miniaturansicht angehängter Grafiken
chart2.gif  

Geändert von MeierZwoo (30. Dez 2012 um 11:15 Uhr)
  Mit Zitat antworten Zitat