![]() |
Funktion für proportionales Seitenverhältnis
Hallo,
ich benötige eine Funktion proportionales Seitenverhältnis beim vergrößern und verlkleinern von Bildern. Habe schon folgendes probiert, ist aber zu ungenau und verzerrt das Bild. x = alte Breite / neue Breite neue Höhe = alte Höhe / x Danke! |
Re: Funktion für proportionales Seitenverhältnis
Wie willst Du es machen. Kennst Du den Faktor, wie das Bild vergrößert werden soll, kannst Du die neue Breite/Höhe, oder kennst die die neuen minimale/maximale Höhe/Breite ?
...:cat:... |
Re: Funktion für proportionales Seitenverhältnis
Wie willst Du es machen. Kennst Du den Faktor, wie das Bild vergrößert werden soll, kannst Du die neue Breite/Höhe, oder kennst die die neuen minimale/maximale Höhe/Breite ?
zum Faktor: x in der Formel ist doch der Faktor Ich hatte da an zwei Editfelder gedacht in denen ich die neuen Maße eingebe. Also wenn ich z.B. ein Bild habe was 1024 x 768 groß ist und im Editfeld für die Breite 800 eingeben soll im 2. Editfeld 600 stehen, dies alles kann man dann noch wahlweise mit einer Checkbox machen. Erstmal würde mir eine Funktion reichen die mir die richtigen Maße errechnet. Die Formel die ich im letzten Beitrag geschrieben habe funktioniert nicht so richtig |
Re: Funktion für proportionales Seitenverhältnis
Also wenn es dir darum geht ein Image zu vergrößern, dann könntest du die Eigenschaft Proportinal auf true stellen und Strech auch auf true. wenn du dann die Größe von dem Image änderst, müsste sich das Bild eigentlich mitverändern.
Man liest sich, Stanlay :hi: |
Re: Funktion für proportionales Seitenverhältnis
Wollte das eigntlich wenn es geht ohne TImage lösen.
|
Re: Funktion für proportionales Seitenverhältnis
Hi!
Hier ein Beispiel: 800/1024 = 0.78125 (=Faktor) ==> Faktor = neue Breite(Höhe)/alte Breite(Höhe) 0.78125*768 = 600 ==> Faktor * alte Breite(Höhe) = gewünschtes Ergebnis. Etwas kompliziert beschrieben, nicht wahr? :wink: Gruß Matze |
Re: Funktion für proportionales Seitenverhältnis
Zitat:
Dann kann ich dir leider nicht weiterhelfen. Man liest sich, Stanlay :hi: |
Re: Funktion für proportionales Seitenverhältnis
Ganau diese Funktion hab ich schon probiert und sogar schon im ersten Beitrag geschrieben. Aber ich werde nochmal ein kleines Testprojekt schreiben wenn dann immernoch Probleme auftreten poste ich den Source. Kann ja sein vielleicht hab ich in meinem jetzigen Pjojekt einen Denkfehler.
|
Re: Funktion für proportionales Seitenverhältnis
Deine Funktion oben ist aber etwas anders. :wink:
Da sind alt und neu irgendwie vertauscht. |
Re: Funktion für proportionales Seitenverhältnis
mit welchem typ muss ich da rechnen, integer kann ich da nicht nehmen und float ist glaube ich auch zu wenig. Was gibt es da noch? mein Buch liegt jetzt leider zuhause
|
Re: Funktion für proportionales Seitenverhältnis
Wieso geht integer nicht??
|
Re: Funktion für proportionales Seitenverhältnis
Integer kannst du ja nicht für Kommazahlen nehmen, dann kommt natürlich ne FEhlermeldung. Versuch mal extended, float oder double...
Habe mir das hier allerdings nicht richtig durchgelsen, nur überflogen. Deshalb bitte nicht böse sein, wenn ich deine Frage ganz falsch verstandnen habe... |
Re: Funktion für proportionales Seitenverhältnis
super danke genau das hab ich jetzt gebraucht
|
Re: Funktion für proportionales Seitenverhältnis
Am Ende benötigst Du Round, um die Fließkommazahlen (Extended, Double...) wieder in Integer umzurechnen.
...:cat:... |
Re: Funktion für proportionales Seitenverhältnis
@BorlanDelphiUser: Achso, du hast gemeint, was für ein Typ der Faktor sein soll, ich dachte du meinst die Bildgröße. :mrgreen:
|
Re: Funktion für proportionales Seitenverhältnis
Noch ein Problem wie kann ich jetzt den extended-wert dem Editfeld zuweisen, also - extended to string?
|
Re: Funktion für proportionales Seitenverhältnis
Die Funktion FloatToStr wird Dir helfen.
Tipp, das steht auch in der Hilfe ...:cat:... |
Re: Funktion für proportionales Seitenverhältnis
Hab mir das ganze eigentlich nicht so kompliziert vorgestellt, bekomme
jetzt beim dividieren eine Fehlermeldung (beim Onchange im Edit). -[ invalid floating point operation ]- faktor:= alteh / neueh; //alle drei Werte sind vom typ extended |
Re: Funktion für proportionales Seitenverhältnis
ganz vergessen, hab es auch schon mit div probiert
|
Re: Funktion für proportionales Seitenverhältnis
Was sind das für zahlen?
Also mit 800/1024 oder ungekehrt geht's. |
Re: Funktion für proportionales Seitenverhältnis
Div würde ich nicht nehmen, das wird sonst viel zu unganau!
1024 div 800 =1 800 div 1024 =0 Das kannst du echt vergessen! :wink: |
Re: Funktion für proportionales Seitenverhältnis
ich hab ein Bild geladen in den Editfeldern steht die Größe. Beim onchange weise ich die aktuelle größe zu z.B. will ich die höhe auf 300 setzen sodaß aus 800x600 dann 400x300 wird. Aber so wie ich einen Wert eingeben will kommt diese Fehlermeldung
-[ invalid floating point operation ]- hat da jemand eine Ahnung woran das liegen könnte |
Re: Funktion für proportionales Seitenverhältnis
Bei mir geht das:
Code:
Gruß Matze
procedure TForm1.Button1Click(Sender: TObject);
var Faktor, neue_Breite: extended; begin Faktor:=400/800; neue_Breite:=Faktor*600; Edit2.Text:=FloatToStr(neue_Breite); end; |
Re: Funktion für proportionales Seitenverhältnis
Wenn es immer ncoh nicht geht, poste mal ein Teil der Procedure...
|
Re: Funktion für proportionales Seitenverhältnis
Übrigens, so ist der Code besser:
Code:
procedure TForm1.Button1Click(Sender: TObject);
var Faktor: extended; neue_Breite: integer; begin Faktor:=400/800; neue_Breite:=round(Faktor*600); Edit2.Text:=IntToStr(neue_Breite); end; |
Re: Funktion für proportionales Seitenverhältnis
Hat sich erledigt die eine Variable mit der ich gerechnet habe war leer, also division duch 0 :).
|
Re: Funktion für proportionales Seitenverhältnis
Na, dann ist ja gut. Im Notfall, falls du falsche zahlen angibst, dann kannst du ja mit
Code:
die Fehlermeldung verhindern.
try
... except ... end Gruß Matze PS: Nette HP. |
Re: Funktion für proportionales Seitenverhältnis
jo das hatte ich gemacht dabei ist mir aufgefallen das die variable für die neue höhe noch leer war und keinen wert zugewiesen bekommen hat.
bis jetzt funktioniert es so wie ich es mir vorgestellt habe, danke an alle! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:35 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