mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2026-01-14 20:49:57 +01:00
Update ViewTransform.cs
This commit is contained in:
parent
17452582b4
commit
57913c0cf4
|
|
@ -1,10 +1,7 @@
|
|||
#if WPF
|
||||
using System;
|
||||
#if WPF
|
||||
using System.Windows;
|
||||
using System.Windows.Media;
|
||||
#elif UWP
|
||||
using Windows.UI.Xaml.Media;
|
||||
#elif WINUI
|
||||
using Microsoft.UI.Xaml.Media;
|
||||
#elif AVALONIA
|
||||
using Avalonia;
|
||||
#endif
|
||||
|
|
@ -122,11 +119,26 @@ namespace MapControl
|
|||
|
||||
private static Rect TransformBounds(Matrix transform, Rect rect)
|
||||
{
|
||||
#if AVALONIA
|
||||
return rect.TransformToAABB(transform);
|
||||
#else
|
||||
return new MatrixTransform { Matrix = transform }.TransformBounds(rect);
|
||||
#endif
|
||||
if (transform.M12 == 0d && transform.M21 == 0d)
|
||||
{
|
||||
return new Rect(
|
||||
rect.X * transform.M11 + transform.OffsetX,
|
||||
rect.Y * transform.M22 + transform.OffsetY,
|
||||
rect.Width * transform.M11,
|
||||
rect.Height * transform.M22);
|
||||
}
|
||||
|
||||
var p1 = transform.Transform(new Point(rect.X, rect.Y));
|
||||
var p2 = transform.Transform(new Point(rect.X, rect.Y + rect.Height));
|
||||
var p3 = transform.Transform(new Point(rect.X + rect.Width, rect.Y));
|
||||
var p4 = transform.Transform(new Point(rect.X + rect.Width, rect.Y + rect.Height));
|
||||
|
||||
var x1 = Math.Min(p1.X, Math.Min(p2.X, Math.Min(p3.X, p4.X)));
|
||||
var y1 = Math.Min(p1.Y, Math.Min(p2.Y, Math.Min(p3.Y, p4.Y)));
|
||||
var x2 = Math.Max(p1.X, Math.Max(p2.X, Math.Max(p3.X, p4.X)));
|
||||
var y2 = Math.Max(p1.Y, Math.Max(p2.Y, Math.Max(p3.Y, p4.Y)));
|
||||
|
||||
return new Rect(x1, y1, x2 - x1, y2 - y1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue