示例#1
0
        protected override Size ArrangeOverride(Size finalSize)
        {
            base.ArrangeOverride(finalSize);
            content.Width  = finalSize.Width;
            content.Height = finalSize.Height;

            Rect newRegion = new Rect(0, 0, finalSize.Width, finalSize.Height);

            if (newRegion != region && newRegion.Width > 0 && newRegion.Height > 0)
            {
                TreemapRenderer t = this, child;

                while (true)
                {
                    child = t.activeChild;
                    if (child == null)
                    {
                        t.SetRegion(newRegion);
                        break;
                    }
                    t = child;
                }
            }

            return(finalSize);
        }
示例#2
0
        // Render a child
        void Clicked(Node n)
        {
            TreemapRenderer c = new TreemapRenderer(n, n.Name);

            Size ns = new Size(region.Width, region.Height);

            c.Measure(ns);
            c.Arrange(region);

            var xlate = new TranslateTransform()
            {
                X = n.Rect.X,
                Y = n.Rect.Y
            };

            var scale = new ScaleTransform()
            {
                ScaleX = n.Rect.Width / region.Width,
                ScaleY = n.Rect.Height / region.Height
            };

            c.RenderTransform = new TransformGroup {
                Children = { scale, xlate }
            };
            c.Opacity = 0.5;
            content.Children.Add(c);
            activeChild = c;

            // Animations
            TimeSpan time = TimeSpan.FromSeconds(0.3);

            var s = new Storyboard()
            {
                Children =
                {
                    Animate(time, xlate, "X",         0),
                    Animate(time, xlate, "Y",         0),
                    Animate(time, scale, "ScaleX",  1.0),
                    Animate(time, scale, "ScaleY",  1.0),
                    Animate(time, c,     "Opacity", 1.0),
                }
            };

            s.Begin();
        }
示例#3
0
        public void Back()
        {
            TreemapRenderer last = this, child = activeChild;

            while (child != null && child.activeChild != null)
            {
                last  = child;
                child = child.activeChild;
            }
            if (child != null)
            {
                Rect childRegion = child.region;

                last.content.Children.Remove(child);
                last.activeChild = null;

                // In case layout changed while we were rendering the child
                if (childRegion != region)
                {
                    SetRegion(childRegion);
                }
            }
        }