Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Berechnung von Seitenlängen(Seitenverhältnis) (https://www.delphipraxis.net/43133-berechnung-von-seitenlaengen-seitenverhaeltnis.html)

Prototypjack 29. Mär 2005 17:09


Berechnung von Seitenlängen(Seitenverhältnis)
 
Hallo,
Ich habe ein Frage:
Und zwar will ich ein Bild skalieren. Alle Methoden die ich dafür brauche habe ich.
Aber:
Ich brauche ein Funktion die mir angibt wie hoch/breit das Bidl sein soll.
Beispiel:
Ich habe ein Bild, dieses muss ich kleiner machen(as darf beispielsweise nicht breiter als 70px und nicht höher als 100px sein). Die Funktion soll mir dann ausrechnen wie groß das Image ist wenn man das Seitenverhältnis beachtet.
Wenn also das Image 700x1000 ist sollte die Funktion einfach 70x100px ausgeben weil das Image das Seitenverhältnis behalten kann weil die Vorgabewerte passen.
Damit noch nicht genug, die Vorgabe werte sind Variabel(also manchmal darf das img nur 70x100 sein oder es soll nur 60x110 sein oder so...)
Versteht ihr was ich meine?
Und was viel wichtiger ist(^^): Hat jemand vielleicht eine Funktion dafür(oder kann mir dabei helfen eine zu schreiben?)
Danke schonmal,
Max

PS: Ich habe bereits gesucht, aber die gefundenen Sachen sind für mich nicht geeignet.

Khabarakh 29. Mär 2005 17:14

Re: Berechnung von Seitenlängen(Seitenverhältnis)
 
Der Faktor, mit dem du Höhe und Breite multiplizieren musst, ist Min(Width/MaxWidth, Height/MaxHeight) .

Prototypjack 29. Mär 2005 19:18

Re: Berechnung von Seitenlängen(Seitenverhältnis)
 
Sry wenn ich jetzt auf dem Schlauch stehe, aber was muss ich damit multiplizieren?
Danke schonmal,
Gruß,
Max

Khabarakh 29. Mär 2005 19:25

Re: Berechnung von Seitenlängen(Seitenverhältnis)
 
Die alte Höhe und Breite, dann bekommst du die neue Höhe und Breite, jedenfalls hoffe ich das :zwinker: .

Prototypjack 29. Mär 2005 19:33

Re: Berechnung von Seitenlängen(Seitenverhältnis)
 
Hallo,
Also ich habe bisher das:
Delphi-Quellcode:
newx :=round(bmp.width * main_frm.scrollbox1.width / bmp.width);
newy :=round(bmp.height * main_frm.scrollbox1.height / bmp.height);
Joar funktionieren tut es schon aber: Die Proportionen, sprich das Verhältnis wird ausser Acht gelassen...
Irgendwie drehen sich da meine Gedanken im Kreis...
Bitte um Hilfe

Christian Seehase 29. Mär 2005 20:04

Re: Berechnung von Seitenlängen(Seitenverhältnis)
 
Moin Proto,

schau Dir das erste Posting von Khabarakh noch einmal genau an.
Du musst jeweils den gleichen Faktor verwenden, und in dem Posting steht, wie man den richtigen errechnet.

Prototypjack 29. Mär 2005 20:25

Re: Berechnung von Seitenlängen(Seitenverhältnis)
 
Ok mittlerweile habe ich das:
aber das bekomme ich die Fehlermeldung das das Handle ungültig ist.
Delphi-Quellcode:
newx :=round(bmp.width * Min(bmp.width/main_frm.scrollbox1.width, bmp.Height/main_frm.scrollbox1.height));
newy :=round(bmp.height * Min(bmp.width/main_frm.scrollbox1.width, bmp.Height/main_frm.scrollbox1.height));
Gruß,
Proto

Christian Seehase 29. Mär 2005 21:50

Re: Berechnung von Seitenlängen(Seitenverhältnis)
 
Moin Proto,

wäre übersichtlicher und schneller, wenn Du das Ergebnis von Min(...) in eine Variable übertragen und diese dann einsetzen würdest.

Die Fehlermeldung kann übrigens nicht von der gezeigten Stelle stammen, da Du dort gar kein Handle ansprichst.
Es wäre zumindest nicht ersichtlich.

BTW:
Wenn Du das ganze in einer Methode von main_frm machst, kannst Du main_frm, aller Voraussicht nach, innerhalb der Methode weglassen.

Sollte sich ein neues Problem ergeben haben (sieht zumindest so aus ;-) ), dann mach' dafür aber bitte einen neuen Thread auf.
Danke.

Khabarakh 30. Mär 2005 08:59

Re: Berechnung von Seitenlängen(Seitenverhältnis)
 
Hast du mehrere Instanzen von main_frm?

Prototypjack 30. Mär 2005 13:19

Re: Berechnung von Seitenlängen(Seitenverhältnis)
 
Naja ich habe mehrere Instanzen von einer Childform, von der aus berechnet wird. Aber das Ziel image ist auf der Mainfrm.

Nochwas:
Ich habe jetzt mal newx und newy per showmessage ausgegeben und kam drauf das viel zu grosse Werte herauskommen(einmal war es glaub ich 30000 oder so)


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:52 Uhr.
Seite 1 von 2  1 2      

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