ScaledCanvas

When components overflow your canvas change scale instead scrollbars.

public class ScaledCanvas extends Canvas
{
      public function ScaledCanvas()
      {
            super ();
            horizontalScrollPolicy = ScrollPolicy.OFF;
            verticalScrollPolicy = ScrollPolicy.OFF;
      }
     
      private var _minScale:Number = 0.5;
     
      [ Inspectable ]
      public function get minScale():Number {
            return _minScale;
      }
     
      public function set minScale(scale:Number): void {
            _minScale = scale;
            invalidateDisplayList();
      }
     
      private var _minFactor:Number = 0.1;
     
      [ Inspectable ]
      public function get minFactor():Number {
            return _minFactor;
      }
     
      public function set minFactor(factor:Number): void {
            _minFactor = factor;
      }
     
      override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number): void {
            super .updateDisplayList(unscaledWidth,unscaledHeight);
            var mx:Number = measuredWidth / scaleX;
            var my:Number = measuredHeight / scaleY;
            if (width < mx || height < my) {
                  var sx:Number = Math.max(minScale, width / mx);
                  var sy:Number = Math.max(minScale, height / my);
                  if (Math.max(Math.abs(sy - scaleY),Math.abs(sx - scaleX))>minFactor) {
                        var s:Number = Math.min( sx, sy );
                         this .scaleX = s;
                        this .scaleY = s;
                  }
            } else if ( width > mx && height > my && ( scaleX != 1 || scaleY != 1 ) ) {
                   scaleX = 1;
                  scaleY = 1;
            }
      }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值