mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2025-12-06 07:12:04 +01:00
Minor improvements in MapRectangle and MapImage.
This commit is contained in:
parent
f3f4b4c0fc
commit
415637a321
|
|
@ -12,13 +12,13 @@ namespace MapControl
|
|||
{
|
||||
public partial class MapImage
|
||||
{
|
||||
private static readonly Transform imageTransform = new MatrixTransform
|
||||
{
|
||||
Matrix = new Matrix(1d, 0d, 0d, -1d, 0d, 1d)
|
||||
};
|
||||
|
||||
private void SourceChanged(ImageSource image)
|
||||
{
|
||||
var imageTransform = new MatrixTransform
|
||||
{
|
||||
Matrix = new Matrix(1d, 0d, 0d, -1d, 0d, 1d)
|
||||
};
|
||||
|
||||
Fill = new ImageBrush
|
||||
{
|
||||
ImageSource = image,
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
// Copyright © Clemens Fischer 2012-2013
|
||||
// Licensed under the Microsoft Public License (Ms-PL)
|
||||
|
||||
using System.Windows;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
|
||||
|
|
@ -10,19 +9,22 @@ namespace MapControl
|
|||
{
|
||||
public partial class MapImage
|
||||
{
|
||||
private static readonly Transform imageTransform = new ScaleTransform(1d, -1d);
|
||||
|
||||
private void SourceChanged(ImageSource image)
|
||||
{
|
||||
var bitmap = image as BitmapSource;
|
||||
|
||||
if (bitmap != null)
|
||||
{
|
||||
image = new TransformedBitmap(bitmap, imageTransform);
|
||||
var imageTransform = new ScaleTransform(1d, -1d);
|
||||
imageTransform.Freeze();
|
||||
|
||||
bitmap = new TransformedBitmap(bitmap, imageTransform);
|
||||
bitmap.Freeze();
|
||||
|
||||
image = bitmap;
|
||||
}
|
||||
|
||||
Fill = new ImageBrush { ImageSource = image };
|
||||
SetBrushTransform();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -13,20 +13,9 @@ namespace MapControl
|
|||
{
|
||||
StrokeThicknessProperty.OverrideMetadata(
|
||||
typeof(MapRectangle), new FrameworkPropertyMetadata(0d));
|
||||
}
|
||||
|
||||
protected void SetBrushTransform()
|
||||
{
|
||||
var tileBrush = Fill as TileBrush;
|
||||
|
||||
if (tileBrush != null && Data != null)
|
||||
{
|
||||
var geometry = (RectangleGeometry)Data;
|
||||
|
||||
tileBrush.ViewportUnits = BrushMappingMode.Absolute;
|
||||
tileBrush.Viewport = geometry.Rect;
|
||||
tileBrush.Transform = geometry.Transform;
|
||||
}
|
||||
FillProperty.OverrideMetadata(
|
||||
typeof(MapRectangle), new FrameworkPropertyMetadata(FillPropertyChanged));
|
||||
}
|
||||
|
||||
private void SetGeometry(Rect rect)
|
||||
|
|
@ -40,7 +29,8 @@ namespace MapControl
|
|||
|
||||
geometry.Rect = rect;
|
||||
geometry.Transform = ParentMap.ViewportTransform;
|
||||
SetBrushTransform();
|
||||
|
||||
SetBrushTransform(Fill as TileBrush);
|
||||
}
|
||||
|
||||
private void ClearGeometry()
|
||||
|
|
@ -50,5 +40,25 @@ namespace MapControl
|
|||
geometry.ClearValue(RectangleGeometry.RectProperty);
|
||||
geometry.ClearValue(Geometry.TransformProperty);
|
||||
}
|
||||
|
||||
private void SetBrushTransform(TileBrush tileBrush)
|
||||
{
|
||||
if (tileBrush != null && Data != null)
|
||||
{
|
||||
var geometry = (RectangleGeometry)Data;
|
||||
|
||||
tileBrush.ViewportUnits = BrushMappingMode.Absolute;
|
||||
tileBrush.Viewport = geometry.Rect;
|
||||
tileBrush.Transform = geometry.Transform;
|
||||
}
|
||||
}
|
||||
|
||||
private static void FillPropertyChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
if (e.NewValue != e.OldValue)
|
||||
{
|
||||
((MapRectangle)o).SetBrushTransform(e.NewValue as TileBrush);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue