Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Funktion für proportionales Seitenverhältnis (https://www.delphipraxis.net/7682-funktion-fuer-proportionales-seitenverhaeltnis.html)

BorlanDelphiUser 19. Aug 2003 07:16


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!

sakura 19. Aug 2003 08:29

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:...

BorlanDelphiUser 19. Aug 2003 08:51

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

Stanlay Hanks 19. Aug 2003 09:06

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:

BorlanDelphiUser 19. Aug 2003 10:09

Re: Funktion für proportionales Seitenverhältnis
 
Wollte das eigntlich wenn es geht ohne TImage lösen.

Matze 19. Aug 2003 10:14

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

Stanlay Hanks 19. Aug 2003 10:17

Re: Funktion für proportionales Seitenverhältnis
 
Zitat:

Zitat von BorlanDelphiUser
Wollte das eigntlich wenn es geht ohne TImage lösen.

Sorry. Ich hab nur gemeint, falls du es mit einem Image hättest machen wollen :wink:
Dann kann ich dir leider nicht weiterhelfen.

Man liest sich, Stanlay :hi:

BorlanDelphiUser 19. Aug 2003 10:20

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.

Matze 19. Aug 2003 10:25

Re: Funktion für proportionales Seitenverhältnis
 
Deine Funktion oben ist aber etwas anders. :wink:
Da sind alt und neu irgendwie vertauscht.

BorlanDelphiUser 19. Aug 2003 10:58

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

Matze 19. Aug 2003 11:01

Re: Funktion für proportionales Seitenverhältnis
 
Wieso geht integer nicht??

Alexander 19. Aug 2003 11:03

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...

BorlanDelphiUser 19. Aug 2003 11:04

Re: Funktion für proportionales Seitenverhältnis
 
super danke genau das hab ich jetzt gebraucht

sakura 19. Aug 2003 11:05

Re: Funktion für proportionales Seitenverhältnis
 
Am Ende benötigst Du Round, um die Fließkommazahlen (Extended, Double...) wieder in Integer umzurechnen.

...:cat:...

Matze 19. Aug 2003 11:08

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:

BorlanDelphiUser 19. Aug 2003 11:16

Re: Funktion für proportionales Seitenverhältnis
 
Noch ein Problem wie kann ich jetzt den extended-wert dem Editfeld zuweisen, also - extended to string?

sakura 19. Aug 2003 11:17

Re: Funktion für proportionales Seitenverhältnis
 
Die Funktion FloatToStr wird Dir helfen.

Tipp, das steht auch in der Hilfe

...:cat:...

BorlanDelphiUser 19. Aug 2003 11:24

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

BorlanDelphiUser 19. Aug 2003 11:27

Re: Funktion für proportionales Seitenverhältnis
 
ganz vergessen, hab es auch schon mit div probiert

Matze 19. Aug 2003 11:27

Re: Funktion für proportionales Seitenverhältnis
 
Was sind das für zahlen?
Also mit 800/1024 oder ungekehrt geht's.

Matze 19. Aug 2003 11:27

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:

BorlanDelphiUser 19. Aug 2003 11:33

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

Matze 19. Aug 2003 11:37

Re: Funktion für proportionales Seitenverhältnis
 
Bei mir geht das:

Code:
procedure TForm1.Button1Click(Sender: TObject);
var Faktor, neue_Breite: extended;
begin
Faktor:=400/800;
neue_Breite:=Faktor*600;

Edit2.Text:=FloatToStr(neue_Breite);
end;
Gruß Matze

Alexander 19. Aug 2003 11:42

Re: Funktion für proportionales Seitenverhältnis
 
Wenn es immer ncoh nicht geht, poste mal ein Teil der Procedure...

Matze 19. Aug 2003 11:45

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;

BorlanDelphiUser 19. Aug 2003 11:45

Re: Funktion für proportionales Seitenverhältnis
 
Hat sich erledigt die eine Variable mit der ich gerechnet habe war leer, also division duch 0 :).

Matze 19. Aug 2003 11:47

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:
try
...
except
...
end
die Fehlermeldung verhindern.

Gruß Matze

PS: Nette HP.

BorlanDelphiUser 19. Aug 2003 12:01

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