AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung skalierung ermitteln TBitmap.Wrapmode = Fit
Thema durchsuchen
Ansicht
Themen-Optionen

skalierung ermitteln TBitmap.Wrapmode = Fit

Offene Frage von "Medium"
Ein Thema von Rynardald · begonnen am 19. Feb 2015 · letzter Beitrag vom 20. Feb 2015
 
Medium

Registriert seit: 23. Jan 2008
3.687 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: skalierung ermitteln TBitmap.Wrapmode = Fit

  Alt 20. Feb 2015, 20:13
Okay, dann anders:
Ich nehme mal an, dass "Fit" heisst, dass das Bild unter Beibehaltung des Seitenverhältnisses skaliert, und nicht wirklich mit Gewalt das Bitmap auf die ganze Anzeige staucht. In dem Fall musst du zunächst das Bildverhältnis des TImage ermitteln: Vi = Image.Breite / Image.Höhe
Das gleiche für das Original-Bitmap: Vb = Bitmap.Breite / Bitmap.Höhe

Wenn Vi > Vb, dann wird das Bitmap in Y-Richtung nachher genau so hoch sein wie das Image. Wenn Vb > Vi, dann wird das Bitmap nachher genau so breit sein wie das Image. Dein Skalierungsfaktor ist dann je nach Fall entweder (Image.Breite / Bitmap.Breite) oder (Image.Höhe / Bitmap.Höhe).

Wenn "Fit" wirklich auf das gesamte Image staucht, brauchst du beide Faktoren und musst die X und Y Koordinaten mit ihren jeweils eigenen Faktoren umrechnen.

Bleibt noch die Frage, ob das Bitmap in der Richtung, in der etwas "über" ist zentriert wird oder nicht. Wenn nicht, ist nichts weiter zu tun. Wenn doch, dann musst du noch folgendes ermitteln:
Von der Achse, die nachher nicht vollständig auf das Image gezogen wird: Offset = (Image.Achse - (Bitmap.Achse * Skalierungsfaktor)) / 2
Dieses Offset musst du dann nacher von den noch nicht umgerechneten Mauskoordinaten (nur auf die entsprechende Achse natürlich) subtrahieren, um den entstandenen Rand zwischen Bitmap und Image zu berücksichtigen.

Alles nur Realschulmathe, keine Bildvergleiche oder sowas für so etwas einfaches! Das wäre mit einem B-52 auf einen Sperling geschossen.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
 

 

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 08:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz