コード例 #1
0
        /// <summary>  </summary>
        public override void InitializeTransform()
        {
            double mercatorSize = 360;
            TranslateTransform translateTransform = new TranslateTransform(MapView.ReferenceSize / 2 - 180, MapView.ReferenceSize / 2 - 180);
            ScaleTransform zoomTransform = new ScaleTransform(MapView.ZoomAdjust * MapView.ReferenceSize / mercatorSize, MapView.ZoomAdjust * MapView.ReferenceSize / mercatorSize, MapView.ReferenceSize / 2, MapView.ReferenceSize / 2);
            TransformGroup transformGroup = new TransformGroup();
            transformGroup.Children.Add(translateTransform);
            transformGroup.Children.Add(zoomTransform);

            zoomTransform.Freeze();
            translateTransform.Freeze();
            transformGroup.Freeze();

            this.RenderTransform = transformGroup;
        }
コード例 #2
0
ファイル: TileSetHelpers.cs プロジェクト: Fulborg/dwarrowdelf
        static Transform CreateNormalizeTransform(Rect bounds, Point location, Size size, double angle)
        {
            if (bounds.IsEmpty)
                return Transform.Identity;

            var t = new TransformGroup();

            var b = bounds;

            // Move center of the geometry to origin
            t.Children.Add(new TranslateTransform(-b.X - b.Width / 2, -b.Y - b.Height / 2));
            // Rotate around origin
            t.Children.Add(new RotateTransform(angle));

            b = t.TransformBounds(bounds);
            // Scale to requested size
            t.Children.Add(new ScaleTransform(size.Width / b.Width, size.Height / b.Height));

            b = t.TransformBounds(bounds);
            // Move to requested position
            t.Children.Add(new TranslateTransform(-b.X + location.X, -b.Y + location.Y));

            t.Freeze();

            b = t.TransformBounds(bounds);
            Debug.Assert(Math.Abs(b.X - location.X) < 0.0001);
            Debug.Assert(Math.Abs(b.Y - location.Y) < 0.0001);
            Debug.Assert(Math.Abs(b.Width - size.Width) < 0.0001);
            Debug.Assert(Math.Abs(b.Height - size.Height) < 0.0001);

            return t;
        }