mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2026-04-05 14:37:01 +00:00
Version 1.1.2: Improved update of child element RenderTransform in MapPanel.SetViewportPosition.
This commit is contained in:
parent
1da0376e05
commit
4867b04fca
12 changed files with 68 additions and 57 deletions
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)]
|
||||
|
|
|
|||
|
|
@ -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)]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue