Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Fenster Seitenverhältnis anpassen
AXMD - Mo 08.08.05 18:09
Titel: Fenster Seitenverhältnis anpassen
N'Abend!
Ich will ein Fenster in der Größe so anpassen, dass es einem bestimmten Seitenverhältnis entspricht (was ja prinzipiell nicht schwer ist), ABER es sollen nur reine Integer-werte sein (also es soll exakt stimmen). Beispiel:
600x400 bei 3:2 ist ok
5:3,5 bei 10:7 nicht, weil 3,5 keine ganze Zahl ist.
Das Seitenverhältnis soll natürlich variabel sein - kann also auch z.B. 11 sein. Wie geh ich am besten vor? Ich ahne Dinge wie KGV und infolgedessen auch GGT ;)
AXMD
//EDIT: Gültiges Beispiel hinzugefügt :P
uall@ogc - Mo 08.08.05 18:16
nä ich würds so machen:
a := 600;
b := 200;
verhältnis 3:2
if (a * 2 = b * 3) and ganzzahlig(a) and ganzzahlig(b) then
// gültig
AXMD - Mo 08.08.05 18:21
Ich will aber nicht prüfen, OB es gültig ist, sondern etwas erzeugen, DAS gültig ist. Das heißt, deine Bedingung soll erfüllt sein - ich will die Form so hinbiegen, dass sie dann ein Seitenverhältnis von 3:2 hat (z.B.)
AXMD
TM - Mo 08.08.05 18:36
Meinst du so was?
Delphi-Quelltext
1: 2: 3: 4:
| if not ganzzahlig(form1.clientheight/2) then form1.clientheight:=form1.clientheight+1; form1.clientwidth:=form1.clientheight*3/2; |
..
AXMD - Mo 08.08.05 18:40
@TM: nein. Hab jetzt eine Lösung von BenBE (thxvm). Lösung sieht wie folgt aus (Anmerkung: PaintBox muss 3:2 sein, daher die Herumrechnerei mit der Differenz Form PaintBox):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TMainForm.SetHeightButtonClick(Sender: TObject); var w: Integer; begin w := Width - 8; Width := w - w mod Round(intervalsre) + 8; Height := Round(intervalsim) * (w div Round(intervalsre)) + (Height - PaintBox1.Height); end;
procedure TMainForm.SetWidthButtonClick(Sender: TObject); var h: Integer; begin h := PaintBox1.Height; Height := h - h mod Round(intervalsim) + (Height - h); Width := Round(intervalsre) * (h div Round(intervalsim)) + 8; end; |
Im Anhang (falls es jemanden interessiert) das Ganze zum Spielen :P. Einfach die Formularweite/-höhe ändern und dann die zwei letzten Buttons in der zweiten Toolbar ausprobieren. Ist leider noch sehr unausgereift. Das Seitenverhältnis gibt der Re-/Im-Raster (auch zweite Toolbar) an.
AXMD
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!