/// <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); }