![]() |
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. |
Re: Berechnung von Seitenlängen(Seitenverhältnis)
Der Faktor, mit dem du Höhe und Breite multiplizieren musst, ist Min(Width/MaxWidth, Height/MaxHeight) .
|
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 |
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: .
|
Re: Berechnung von Seitenlängen(Seitenverhältnis)
Hallo,
Also ich habe bisher das:
Delphi-Quellcode:
Joar funktionieren tut es schon aber: Die Proportionen, sprich das Verhältnis wird ausser Acht gelassen...
newx :=round(bmp.width * main_frm.scrollbox1.width / bmp.width);
newy :=round(bmp.height * main_frm.scrollbox1.height / bmp.height); Irgendwie drehen sich da meine Gedanken im Kreis... Bitte um Hilfe |
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. |
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:
Gruß,
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)); Proto |
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. |
Re: Berechnung von Seitenlängen(Seitenverhältnis)
Hast du mehrere Instanzen von main_frm?
|
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 02:41 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