Version 1.1.2: Improved update of child element RenderTransform in MapPanel.SetViewportPosition.

This commit is contained in:
ClemensF 2012-12-12 01:44:37 +01:00
parent 1da0376e05
commit 4867b04fca
12 changed files with 68 additions and 57 deletions

View file

@ -136,24 +136,17 @@ namespace MapControl
label.Measure(measureSize);
var translateTransform = new TranslateTransform
{
X = StrokeThickness / 2d + 2d,
Y = -label.DesiredSize.Height / 2d
};
var transformGroup = (TransformGroup)label.RenderTransform;
var transform = (TransformGroup)label.RenderTransform;
if (transformGroup.Children.Count == 0)
{
transformGroup.Children.Add(new TranslateTransform());
transformGroup.Children.Add(parentMap.RotateTransform);
}
if (transform.Children.Count == 0)
{
transform.Children.Add(translateTransform);
transform.Children.Add(parentMap.RotateTransform);
}
else
{
transform.Children[0] = translateTransform;
transform.Children[1] = parentMap.RotateTransform;
}
var translateTransform = (TranslateTransform)transformGroup.Children[0];
translateTransform.X = StrokeThickness / 2d + 2d;
translateTransform.Y = -label.DesiredSize.Height / 2d;
MapPanel.SetLocation(label, location);
}

View file

@ -148,7 +148,7 @@ namespace MapControl
private static void SetViewportPosition(UIElement element, MapBase parentMap, Location location)
{
Point? viewportPosition = null;
Point viewportPosition = new Point();
if (parentMap != null && location != null)
{
@ -160,42 +160,38 @@ namespace MapControl
element.ClearValue(ViewportPositionProperty);
}
TranslateTransform translateTransform;
var transformGroup = element.RenderTransform as TransformGroup;
if (transformGroup != null)
{
var transform = new TranslateTransform();
var last = transformGroup.Children.Count - 1;
if (viewportPosition.HasValue)
if (last >= 0 && transformGroup.Children[last] is TranslateTransform)
{
transform.X = viewportPosition.Value.X;
transform.Y = viewportPosition.Value.Y;
}
var transformIndex = transformGroup.Children.Count - 1;
if (transformIndex >= 0 &&
transformGroup.Children[transformIndex] is TranslateTransform)
{
transformGroup.Children[transformIndex] = transform;
translateTransform = (TranslateTransform)transformGroup.Children[last];
}
else
{
transformGroup.Children.Add(transform);
translateTransform = new TranslateTransform();
transformGroup.Children.Add(translateTransform);
}
}
else if (viewportPosition.HasValue)
{
element.RenderTransform = new TranslateTransform
{
X = viewportPosition.Value.X,
Y = viewportPosition.Value.Y
};
}
else
{
element.ClearValue(UIElement.RenderTransformProperty);
if (element.RenderTransform is TranslateTransform)
{
translateTransform = (TranslateTransform)element.RenderTransform;
}
else
{
translateTransform = new TranslateTransform();
element.RenderTransform = translateTransform;
}
}
translateTransform.X = viewportPosition.X;
translateTransform.Y = viewportPosition.Y;
}
private static void AlignElementWithLocation(FrameworkElement element, ref Rect arrangeRect)

View file

@ -16,6 +16,6 @@ using System.Windows;
[assembly: AssemblyCopyright("Copyright © 2012 Clemens Fischer")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("1.1.1")]
[assembly: AssemblyFileVersion("1.1.1")]
[assembly: AssemblyVersion("1.1.2")]
[assembly: AssemblyFileVersion("1.1.2")]
[assembly: ComVisible(false)]

View file

@ -9,6 +9,6 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCopyright("Copyright © 2012 Clemens Fischer")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("1.1.1")]
[assembly: AssemblyFileVersion("1.1.1")]
[assembly: AssemblyVersion("1.1.2")]
[assembly: AssemblyFileVersion("1.1.2")]
[assembly: ComVisible(false)]