Autor Beitrag
daywalker0086
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 243


Delphi 2005 Architect
BeitragVerfasst: Di 10.04.12 15:15 
Hallo Leute, ich steh mal wieder aufm Schlauch. Bitte helft mir.

Ich habe folgendes Problem ich habe ein Shape auf welches ich ein Rechteck zeichnen will. Soweit so gut das bekomm ich hin.

Jetzt sagen wir mal das Shape hatt die Größe von 1000 x 600 pixeln.
Darauf will ich jetzt ein Rechteck zeichnen das in wahrer Größe 7m mal 4m hat.
Jetzt dacht ich mir ok für die Breite nimmst du 900 pixel(damit das Rechteck nicht auf die Grenzen gezeichnet wird sondern ein wenig Abstand hat).
Für die Hoehe rechnest du einfach 900*5/7 = sind rund 514pixel.
Dann sollte das ja passen oder?

Was wäre aber wenn mein Bereich nur 1000 x 500 Pixel hat. Dann müsst ich ja die Höhe als referenz nehmen und darauf dann die Breite berechnen.
Geht das nicht einfacher und schneller?

Grüße Christian

Moderiert von user profile iconNarses: Titel geändert, war: "Form skalieren ich steh aufm Schlauch".
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Di 10.04.12 19:23 
Für ein Rechteck ist das ja kein großer Aufwand, ich gehe als davon aus, dass du viele Objekte zeichnen willst:

Dein Shape hat die Größe wxh
Deine BoundingBox hat z.B. die Größe bxa. (BoundingBox = ein Rahmen um all die vielen Dinge, die du zeichnen willst).

=> bxa auf Breite strecken (x=w)
w/b = y/a
=> y = w*a/b
=> falls y<h dann passt das Rechteck. Sonst:

=> bxa auf Höhe strecken (y=h)
x/b = h/a
=> x ist die Breite damit's passt.

Jetzt:
fX := x/b;
fY := y/a;

Jetzt hast du deine BoundingBox eingepasst.

Jetzt kannst du leicht loslegen:

Rechteck 2mx 1m => fX*2 , fY*1 Pixel
Rechteck 15mx22m => fX*15, fY*22 Pixel
...

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)