修正矢量图变换逻辑
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user