绘制DropIcon矢量图
This commit is contained in:
		@@ -5,6 +5,9 @@ using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using System.Windows.Media;
 | 
			
		||||
using System.Windows;
 | 
			
		||||
using System.ComponentModel;
 | 
			
		||||
using System.Windows.Controls;
 | 
			
		||||
using Drawing = System.Drawing;
 | 
			
		||||
 | 
			
		||||
namespace Deedy.Activity.Helpers
 | 
			
		||||
{
 | 
			
		||||
@@ -30,12 +33,12 @@ namespace Deedy.Activity.Helpers
 | 
			
		||||
            {
 | 
			
		||||
                case DropPlacement.Rejected:
 | 
			
		||||
                    {
 | 
			
		||||
                        
 | 
			
		||||
 | 
			
		||||
                    }
 | 
			
		||||
                    break;
 | 
			
		||||
                case DropPlacement.Uncertain:
 | 
			
		||||
                    {
 | 
			
		||||
                        
 | 
			
		||||
 | 
			
		||||
                    }
 | 
			
		||||
                    break;
 | 
			
		||||
                case DropPlacement.BeforeMe:
 | 
			
		||||
@@ -93,7 +96,7 @@ namespace Deedy.Activity.Helpers
 | 
			
		||||
            DropPlacement result = DropPlacement.UnDragged;
 | 
			
		||||
            if (ui != null)
 | 
			
		||||
            {
 | 
			
		||||
                Size size = ui.RenderSize;
 | 
			
		||||
                System.Windows.Size size = ui.RenderSize;
 | 
			
		||||
                double horRuler = size.Width / 3;
 | 
			
		||||
                if (horRuler > 20) horRuler = 20;
 | 
			
		||||
                double verRuler = size.Height / 3;
 | 
			
		||||
@@ -149,5 +152,31 @@ namespace Deedy.Activity.Helpers
 | 
			
		||||
            }
 | 
			
		||||
            return result;
 | 
			
		||||
        }
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 将一个字符串解析为一个矢量图形
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="geometryString">矢量图形的字符串表示形式</param>
 | 
			
		||||
        /// <returns>如果解析成功则返回「Geometry」对象</returns>
 | 
			
		||||
        public static Geometry? Help_ParseAsGeometry(this string geometryString) => TypeDescriptor.GetConverter(typeof(Geometry)).ConvertFromString(geometryString) as Geometry;
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 对一个矢量图形进行连续的「缩放」、「平移」到一个「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)
 | 
			
		||||
        {
 | 
			
		||||
            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 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;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -23,6 +23,13 @@ namespace Deedy.Activity
 | 
			
		||||
            public const string ToolIcon_Close = "ToolIcon_Close";
 | 
			
		||||
            public const string ToolIcon_Edit = "ToolIcon_Edit";
 | 
			
		||||
            public const string ToolIcon_Save = "ToolIcon_Save";
 | 
			
		||||
 | 
			
		||||
            public const string DropIcon_BringForward = "DropIcon_BringForward";        // 上移一层
 | 
			
		||||
            public const string DropIcon_SendBackward = "DropIcon_SendBackward";        // 下移一层
 | 
			
		||||
            public const string DropIcon_InsideOneself = "DropIcon_InsideOneself";      // 自身内部
 | 
			
		||||
            public const string DropIcon_BeforeOrBehind = "DropIcon_BeforeOrBehind";    // 自身前后
 | 
			
		||||
            public const string DropIcon_ReplaceOneself = "DropIcon_ReplaceOneself";    // 替换自身
 | 
			
		||||
            public const string DropIcon_LinkWithOneself = "DropIcon_LinkWithOneself";  // 链接自身
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static ComponentResourceKey? LookupResourceKey(string themeKey)
 | 
			
		||||
@@ -43,5 +50,12 @@ namespace Deedy.Activity
 | 
			
		||||
        public static ComponentResourceKey ToolIcon_Close = new ComponentResourceKey(typeof(ThemeKeys), Keys.ToolIcon_Close);
 | 
			
		||||
        public static ComponentResourceKey ToolIcon_Edit = new ComponentResourceKey(typeof(ThemeKeys), Keys.ToolIcon_Edit);
 | 
			
		||||
        public static ComponentResourceKey ToolIcon_Save = new ComponentResourceKey(typeof(ThemeKeys), Keys.ToolIcon_Save);
 | 
			
		||||
 | 
			
		||||
        public static ComponentResourceKey DropIcon_BringForward = new ComponentResourceKey(typeof(ThemeKeys), Keys.DropIcon_BringForward);
 | 
			
		||||
        public static ComponentResourceKey DropIcon_SendBackward = new ComponentResourceKey(typeof(ThemeKeys), Keys.DropIcon_SendBackward);
 | 
			
		||||
        public static ComponentResourceKey DropIcon_InsideOneself = new ComponentResourceKey(typeof(ThemeKeys), Keys.DropIcon_InsideOneself);
 | 
			
		||||
        public static ComponentResourceKey DropIcon_BeforeOrBehind = new ComponentResourceKey(typeof(ThemeKeys), Keys.DropIcon_BeforeOrBehind);
 | 
			
		||||
        public static ComponentResourceKey DropIcon_ReplaceOneself = new ComponentResourceKey(typeof(ThemeKeys), Keys.DropIcon_ReplaceOneself);
 | 
			
		||||
        public static ComponentResourceKey DropIcon_LinkWithOneself = new ComponentResourceKey(typeof(ThemeKeys), Keys.DropIcon_LinkWithOneself);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -21,5 +21,12 @@ namespace Deedy.Activity
 | 
			
		||||
        public ImageSource? ToolIcon_Close => this[ThemeKeys.ToolIcon_Close] as ImageSource;
 | 
			
		||||
        public ImageSource? ToolIcon_Edit => this[ThemeKeys.ToolIcon_Edit] as ImageSource;
 | 
			
		||||
        public ImageSource? ToolIcon_Save => this[ThemeKeys.ToolIcon_Save] as ImageSource;
 | 
			
		||||
 | 
			
		||||
        public PathGeometry? DropIcon_BringForward => this[ThemeKeys.DropIcon_BringForward] as PathGeometry;
 | 
			
		||||
        public PathGeometry? DropIcon_SendBackward => this[ThemeKeys.DropIcon_SendBackward] as PathGeometry;
 | 
			
		||||
        public PathGeometry? DropIcon_InsideOneself => this[ThemeKeys.DropIcon_InsideOneself] as PathGeometry;
 | 
			
		||||
        public PathGeometry? DropIcon_BeforeOrBehind => this[ThemeKeys.DropIcon_BeforeOrBehind] as PathGeometry;
 | 
			
		||||
        public PathGeometry? DropIcon_ReplaceOneself => this[ThemeKeys.DropIcon_ReplaceOneself] as PathGeometry;
 | 
			
		||||
        public PathGeometry? DropIcon_LinkWithOneself => this[ThemeKeys.DropIcon_LinkWithOneself] as PathGeometry;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,10 +2,13 @@
 | 
			
		||||
                    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 | 
			
		||||
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 | 
			
		||||
                    xmlns:local="clr-namespace:Deedy.Activity">
 | 
			
		||||
    <!--#region ActivityIcon-->
 | 
			
		||||
    <DrawingImage x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type local:ThemeKeys},ResourceId=Activity_DefaultIcon}">
 | 
			
		||||
        <!--矢量图标定义-->
 | 
			
		||||
    </DrawingImage>
 | 
			
		||||
    
 | 
			
		||||
    <!--#endregion-->
 | 
			
		||||
 | 
			
		||||
    <!--#region 消息回显图标-->
 | 
			
		||||
    <DrawingImage x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type local:ThemeKeys},ResourceId=InfoIcon_None}">
 | 
			
		||||
        <!--矢量图标定义-->
 | 
			
		||||
    </DrawingImage>
 | 
			
		||||
@@ -18,7 +21,9 @@
 | 
			
		||||
    <DrawingImage x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type local:ThemeKeys},ResourceId=InfoIcon_Error}">
 | 
			
		||||
        <!--矢量图标定义-->
 | 
			
		||||
    </DrawingImage>
 | 
			
		||||
    
 | 
			
		||||
    <!--#endregion-->
 | 
			
		||||
 | 
			
		||||
    <!--#region 工具按钮图标-->
 | 
			
		||||
    <DrawingImage x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type local:ThemeKeys},ResourceId=ToolIcon_Delete}">
 | 
			
		||||
        <!--矢量图标定义-->
 | 
			
		||||
    </DrawingImage>
 | 
			
		||||
@@ -31,5 +36,28 @@
 | 
			
		||||
    <DrawingImage x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type local:ThemeKeys},ResourceId=ToolIcon_Save}">
 | 
			
		||||
        <!--矢量图标定义-->
 | 
			
		||||
    </DrawingImage>
 | 
			
		||||
    <!--#endregion-->
 | 
			
		||||
 | 
			
		||||
    <!--#region 拖放操作图标-->
 | 
			
		||||
    <PathGeometry x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type local:ThemeKeys},ResourceId=DropIcon_BringForward}">
 | 
			
		||||
        M0,0H24V4H0Z
 | 
			
		||||
    </PathGeometry>
 | 
			
		||||
    <PathGeometry x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type local:ThemeKeys},ResourceId=DropIcon_SendBackward}">
 | 
			
		||||
        M0,0H24V4H0Z
 | 
			
		||||
    </PathGeometry>
 | 
			
		||||
    <PathGeometry x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type local:ThemeKeys},ResourceId=DropIcon_InsideOneself}">
 | 
			
		||||
        M0,0H8L16,16L0,8ZM16,16L24,0V24H0Z
 | 
			
		||||
    </PathGeometry>
 | 
			
		||||
    <PathGeometry x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type local:ThemeKeys},ResourceId=DropIcon_BeforeOrBehind}">
 | 
			
		||||
        M0,0H24V4H0ZM12,4L0,16L12,10L24,16ZM12,10L0,24L12,16L24,24Z
 | 
			
		||||
    </PathGeometry>
 | 
			
		||||
    <PathGeometry x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type local:ThemeKeys},ResourceId=DropIcon_ReplaceOneself}">
 | 
			
		||||
        M0,24V0H24L6,6ZM6,6L12,24V12H24Z
 | 
			
		||||
    </PathGeometry>
 | 
			
		||||
    <PathGeometry x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type local:ThemeKeys},ResourceId=DropIcon_LinkWithOneself}">
 | 
			
		||||
        M0,0H24V4H0Z
 | 
			
		||||
    </PathGeometry>
 | 
			
		||||
    <!--#endregion-->
 | 
			
		||||
 | 
			
		||||
    <!-- x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type local:ThemeKeys},ResourceId=ResourceKey}" -->
 | 
			
		||||
</ResourceDictionary>
 | 
			
		||||
		Reference in New Issue
	
	Block a user