AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Resize ohne Dimensions Verlust

Ein Thema von EWeiss · begonnen am 20. Mär 2017 · letzter Beitrag vom 20. Mär 2017
 
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#6

AW: Resize ohne Dimensions Verlust

  Alt 20. Mär 2017, 07:40
So wie ich das verstanden habe, macht die eigentliche Arbeit der Skalierung GDIP_DrawImageRect. Es geht also lediglich darum die korrekte Breite/Höhe zu ermitteln.

Das Problem sind eigentlich zwei Probleme. Du willst das Bild zentrieren und das Bildverhältnis beibehalten.
Du musst dazu in einem ersten Schritt die richtige Breite/Höhe anpassen und in einem zweiten Schritt das Bild zentrieren.

Delphi-Quellcode:
var
  SollVerhaeltnis: Double;
  IstVerhaeltnis: Double;
  w, h: Integer;
begin
  IstVerhaeltnis := GifFrameRect.Width / GifFrameRect.Height;
  SollVerhaeltnis := rc.Width / rc.Height;
  if IstVerhaeltnis>SollVerhaeltnis
  then begin
    w := rc.Width;
    h := trunc(rc.Width / IstVerhaeltnis);
  end
  else
  if IstVerhaeltnis<SollVerhaeltnis
  then begin
    h := rc.Height;
    w := trunc(rc.Height * IstVerhaeltnis);
  end
  else begin
    w := rc.Width;
    h := rc.Height;
  end;
end;
Nun hast die gewünschte Breite und Höhe des Ziel-Bildes. Als nächste musst Du diese Werte benutzen um die Position zu berechnen
Delphi-Quellcode:
  x := (rc.Width-w) div 2 + rc.left;
  y := (rc.Height-h) div 2 + rc.top;

Geändert von samso (20. Mär 2017 um 09:20 Uhr) Grund: Fehlerbeseitigung bei der Zentrierung
  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 10:11 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-2025 by Thomas Breitkreuz