コード例 #1
0
ファイル: D2dUtil.cs プロジェクト: blue3k/ATFClone
        /// <summary>
        /// Draws an icon that indicates a linked (referenced) item</summary>
        /// <param name="g">The Direct2D graphics object</param>
        /// <param name="x">X coordinate of icon top left corner</param>
        /// <param name="y">Y coordinate of icon top left corner</param>
        /// <param name="size">Size of expander, in pixels</param>
        /// <param name="brush">Brush</param>
        public static void DrawLink(this D2dGraphics g, float x, float y, float size, D2dBrush brush)
        {
            var path     = new EdgeStyleData[5];
            var pathData = new PointF[16];

            for (int i = 0; i < 16; ++i)
            {
                pathData[i] = new PointF(s_unitCurvedArrowData[i].X * size + x, s_unitCurvedArrowData[i].Y * size + y);
            }

            var edgeData = new EdgeStyleData
            {
                ShapeType = EdgeStyleData.EdgeShape.Line,
                EdgeData  = new PointF[] { pathData[0], pathData[1], pathData[2], pathData[3] }
            };

            path[0] = edgeData;

            edgeData = new EdgeStyleData
            {
                ShapeType = EdgeStyleData.EdgeShape.Bezier,
                EdgeData  = new BezierCurve2F(pathData[3], pathData[4], pathData[5], pathData[6])
            };
            path[1] = edgeData;

            edgeData = new EdgeStyleData
            {
                ShapeType = EdgeStyleData.EdgeShape.Bezier,
                EdgeData  = new BezierCurve2F(pathData[6], pathData[7], pathData[8], pathData[9])
            };
            path[2] = edgeData;

            edgeData = new EdgeStyleData
            {
                ShapeType = EdgeStyleData.EdgeShape.Bezier,
                EdgeData  = new BezierCurve2F(pathData[9], pathData[10], pathData[11], pathData[12])
            };
            path[3] = edgeData;

            edgeData = new EdgeStyleData
            {
                ShapeType = EdgeStyleData.EdgeShape.Bezier,
                EdgeData  = new BezierCurve2F(pathData[12], pathData[13], pathData[14], pathData[15])
            };
            path[4] = edgeData;

            g.FillPath(path, brush);
        }