Proportional scaling
Wilhelm Sanke
sanke at hrz.uni-kassel.de
Tue Sep 21 20:52:05 EDT 2004
On Mon, 20 Sep 2004, Simon Lord wrote:
> I have an object on my card which can be scaled at runtime, the next
> step is to get this object to scale proportionally using it's current
> H x W as the aspect ratio when the shiftKey is down.
>
> So if the object is currently shaped like a rectangle, when I hold the
> shiftKey down and continue dragging the object will maintain the same
> aspect ratio at the time I held the shiftKey down.
>
> Unfortunately I'm at a lose at to where to even start the math on this.
>
>
> Sincerely,
> Simon
Hello Simon,
The following may not match exactly your expectations, but is maybe a
starting point.
I have a "zoom" script on card "slideshow" of my stack "Slideshow
Light", 82 KB (formerly to be found in Rev's User Contributions, now on
my website <http://www.sanke.org>, English version, page "Sample Stacks").
From the short description:
"Slideshow allowing JPG-, GIF-, PNG- and BMP-images. Preview and
re-ordering possible. Different display sizes can be set. Zoom function;
adjusting of display duration during show."
This zoom function does not change the images continuously, but sets the
new size - with the correct aspect ratio - after the dragging of the
scrollbar thumb has finished. I also had a continuously changing version
of such a zoom, but for some reason did not implement it in this
slideshow stack.
Examples from the scripts
to put the aspect ratio into Var "Proportion":
"set the numberformat to 0.00
put the formattedheight of image 1 into FHoehe
put the formattedwidth of image 1 into FBreite
put FBreite / FHoehe into Proportion"
script of the zoom scrollbar (assumes there are two extra scrollbars -
that become visible when needed - to navigate inside the enlarged image):
"global Proportion, Stelle
local Neuhoehe, Neubreite
on scrollbardrag x
put x into Neuhoehe
put Neuhoehe * Proportion into NeuBreite
put trunc(Neubreite) into Neubreite
put NeuBreite&&"X"&&Neuhoehe into fld "Rechteck"
end scrollbardrag
on mouseup
set the cursor to watch
lock screen
set the height of image 1 to Neuhoehe
set the width of image 1 to NeuBreite
set the loc of image 1 to 512,384
if NeuBreite > 1024 then
put (Neubreite - 1024) div 2 into BreitDiff
set the Startvalue of scrollbar "horizontal" to -Breitdiff
set the Endvalue of scrollbar "horizontal" to Breitdiff
show scrollbar "Horizontal"
else
hide scrollbar "horizontal"
end if
if Neuhoehe > 768 then
put (Neuhoehe - 768) div 2 into HoehDiff
set the Startvalue of scrollbar "vertical" to -Hoehdiff
set the Endvalue of scrollbar "vertical" to Hoehdiff
show scrollbar "vertical"
else
hide scrollbar "vertical"
end if
set the thumbpos of scrollbar "vertical" to 0
set the thumbpos of scrollbar "horizontal" to 0
put the 512,384 into Stelle
set the cursor to hand
end mouseup"
Maybe this helps, if not - discard it.
Regards,
Wilhelm Sanke
http://www.sanke.org
More information about the metacard
mailing list