예제 #1
0
        protected override Size ArrangeOverride(Size finalSizeInHostCoordinates)
        {
            var effectiveZoomFactor = ZoomFactor;
              var finalSizeInViewCoordinates = finalSizeInHostCoordinates.Scale(effectiveZoomFactor);
              var requiredSizeInViewCoordinates = base.ArrangeOverride(finalSizeInViewCoordinates);
              var requiredSizeInHostCoordinates = requiredSizeInViewCoordinates.Scale(1 / effectiveZoomFactor);

              if (effectiveZoomFactor != 1)
              {
            transform.ScaleX = transform.ScaleY = 1 / effectiveZoomFactor;
            contentHolder.RenderTransform = transform;
              }
              else
            contentHolder.RenderTransform = null;

            #if LOG_MEASURE_ARRANGE_OVERRIDE
              Debug.WriteLine("*** ArrangeOverride ***");
              Debug.WriteLine("  input size (host coordinates):    {0:#.} x {1:#.}", finalSizeInHostCoordinates.Width, finalSizeInHostCoordinates.Height);
              Debug.WriteLine("  converted (view coordinates):     {0:#.} x {1:#.}", finalSizeInViewCoordinates.Width, finalSizeInViewCoordinates.Height);
              Debug.WriteLine("  required size (view coordinates): {0:#} x {1:#.}", requiredSizeInViewCoordinates.Width, requiredSizeInViewCoordinates.Height);
              Debug.WriteLine("  scaling factor:                   {0:#.##}", ZoomFactor);
              Debug.WriteLine("  returning (host coordinates):     {0:#.} x {1:#.}", requiredSizeInHostCoordinates.Width, requiredSizeInHostCoordinates.Height);
            #endif

              return requiredSizeInHostCoordinates;
        }
예제 #2
0
        protected override Size MeasureOverride(Size availableSizeInHostCoordinates)
        {
            var effectiveZoomFactor = ZoomFactor;
              var availableSizeInViewCoordinates = availableSizeInHostCoordinates.Scale(effectiveZoomFactor);
              var desiredSizeInViewCoordinates = base.MeasureOverride(availableSizeInViewCoordinates);
              var desiredSizeInHostCoordinates = desiredSizeInViewCoordinates.Scale(1 / effectiveZoomFactor);

            #if LOG_MEASURE_ARRANGE_OVERRIDE
              Debug.WriteLine("*** MeasureOverride ***");
              Debug.WriteLine("  input size (host coordinates):    {0:#.} x {1:#.}", availableSizeInHostCoordinates.Width, availableSizeInHostCoordinates.Height);
              Debug.WriteLine("  converted (view coordinates):     {0:#.} x {1:#.}", availableSizeInViewCoordinates.Width, availableSizeInViewCoordinates.Height);
              Debug.WriteLine("  required size (view coordinates): {0:#} x {1:#.}", desiredSizeInViewCoordinates.Width, desiredSizeInViewCoordinates.Height);
              Debug.WriteLine("  scaling factor:                   {0:#.##}", ZoomFactor);
              Debug.WriteLine("  returning (host coordinates):     {0:#.} x {1:#.}", desiredSizeInHostCoordinates.Width, desiredSizeInHostCoordinates.Height);
            #endif

              return desiredSizeInHostCoordinates;
        }