Stupid Question Again - Proportional Scaling

Peter Reid preid at reidit.co.uk
Sat Mar 17 13:14:36 EDT 2018


I know it's possible and I know it's simple really, but I can't remember it/figure it out!

I have a sub-stack that contains an image.  I want the user to be able to drag the corners and edges of the sub-stack window to make the window and its image larger or smaller, but the window and image must maintain their original aspect ratio – no stretching, no empty borders etc.  I've tried the following in the card script:

global gImageRatio

on resizeStack pNewWidth, pNewHeight, pOldWidth, pOldHeight
   propSizeImage "coinSet", gImageRatio
   pass resizeStack
end resizeStack

on propSizeImage pImageName, @pImageRatio
   put the width of this stack into propWidth
   set the width of image pImageName to propWidth 
   put propWidth div pImageRatio into propHeight
   put the width of image pImageName into tWidth
   put the height of image pImageName into tHeight
   if propHeight > tHeight then
      put tHeight into propH
      put tHeight * pImageRatio into propW
   else if propHeight < tHeight then
      put propHeight into propH
      put propH * pImageRatio into propW
   else
      put tWidth into propW
      put tHeight into propH
   end if
   set the height of image pImageName to propH 
   set the width of image pImageName to propW 
   set the height of this stack to propH 
   set the width of this stack to propW
   set the topLeft of image pImageName to 0,0
end propSizeImage

with the following initialisation in the stack script:

global gImageRatio

on preOpenStack
   put the width of image "CoinSet" / the height of image "CoinSet" into gImageRatio
end preOpenStack

I'm probably missing something obvious, but can anyone help please?!

Thanks

Peter
--
Peter Reid
Loughborough, UK






More information about the Use-livecode mailing list