修正矢量图变换逻辑
This commit is contained in:
@@ -159,21 +159,22 @@ namespace Deedy.Activity.Helpers
|
|||||||
/// <returns>如果解析成功则返回「Geometry」对象</returns>
|
/// <returns>如果解析成功则返回「Geometry」对象</returns>
|
||||||
public static Geometry? Help_ParseAsGeometry(this string geometryString) => TypeDescriptor.GetConverter(typeof(Geometry)).ConvertFromString(geometryString) as Geometry;
|
public static Geometry? Help_ParseAsGeometry(this string geometryString) => TypeDescriptor.GetConverter(typeof(Geometry)).ConvertFromString(geometryString) as Geometry;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 对一个矢量图形进行连续的「缩放」、「平移」到一个「Rectangle」后再以图形中心点为中心沿顺时针旋转指定角度
|
/// 以图形中心点为中心沿顺时针旋转指定角度;再对一个矢量图形进行连续的「缩放」、「平移」到一个「Rectangle」
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="geometry">要进行映射的矢量图形</param>
|
/// <param name="geometry">要进行映射的矢量图形</param>
|
||||||
/// <param name="rectangle">目标位置</param>
|
/// <param name="rectangle">目标位置</param>
|
||||||
/// <param name="angle">旋转角度</param>
|
/// <param name="angle">旋转角度</param>
|
||||||
/// <returns>克隆平移后的新矢量图形</returns>
|
/// <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();
|
Geometry newGeometry = geometry.Clone();
|
||||||
newGeometry.Transform = new TransformGroup
|
newGeometry.Transform = new TransformGroup
|
||||||
{
|
{
|
||||||
Children = {
|
Children = {
|
||||||
|
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 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 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;
|
return newGeometry;
|
||||||
|
|||||||
Reference in New Issue
Block a user