修正矢量图变换逻辑

This commit is contained in:
zengwenjie
2025-09-26 11:20:44 +08:00
parent f7c75ded9f
commit e96e385f5b

View File

@@ -159,21 +159,22 @@ namespace Deedy.Activity.Helpers
/// <returns>如果解析成功则返回「Geometry」对象</returns>
public static Geometry? Help_ParseAsGeometry(this string geometryString) => TypeDescriptor.GetConverter(typeof(Geometry)).ConvertFromString(geometryString) as Geometry;
/// <summary>
/// 对一个矢量图形进行连续的「缩放」、「平移」到一个「Rectangle」后再以图形中心点为中心沿顺时针旋转指定角度
/// 以图形中心点为中心沿顺时针旋转指定角度;再对一个矢量图形进行连续的「缩放」、「平移」到一个「Rectangle」
/// </summary>
/// <param name="geometry">要进行映射的矢量图形</param>
/// <param name="rectangle">目标位置</param>
/// <param name="angle">旋转角度</param>
/// <returns>克隆平移后的新矢量图形</returns>
public static Geometry Help_MappingToBounds(this Geometry geometry, Rect rectangle, double angle)
public static Geometry Help_MappingToBounds(this Geometry geometry, double angle, Rect rectangle)
{
Geometry newGeometry = geometry.Clone();
newGeometry.Transform = new TransformGroup
{
Children = {
new ScaleTransform(rectangle.Width/ newGeometry.Bounds.Width, rectangle.Height/newGeometry.Bounds.Height), // 宽度放大2倍高度放大1.5倍
new RotateTransform(angle,newGeometry.Bounds.Left + newGeometry.Bounds.Width/2,
newGeometry.Bounds.Top + newGeometry.Bounds.Height/2), // 顺时针旋转90度
new ScaleTransform(rectangle.Width/newGeometry.Bounds.Width, rectangle.Height/newGeometry.Bounds.Height), // 宽度放大2倍高度放大1.5倍
new TranslateTransform(rectangle.Left-newGeometry.Bounds.Left, rectangle.Top-newGeometry.Bounds.Top), // X/Y方向位移
new RotateTransform(angle,rectangle.Width/2,rectangle.Height/2) // 顺时针旋转90度
}
};
return newGeometry;