internal void draw(Graphics g, RectangleF nodeRect, float angle, MarkDrawArgs customDrawArgs, float markSize) { float cX = nodeRect.X + nodeRect.Width * x / 100; float cY = nodeRect.Y + nodeRect.Height * y / 100; float d = markSize / 2; if (angle != 0) { PointF point = new PointF(cX, cY); point = Utilities.rotatePointAt(point, Utilities.getCenter(nodeRect), angle); cX = point.X; cY = point.Y; } switch (markStyle) { case MarkStyle.Cross: { System.Drawing.Pen pen = new System.Drawing.Pen(color, 0); g.DrawLine(pen, cX - d, cY, cX + d, cY); g.DrawLine(pen, cX, cY - d, cX, cY + d); pen.Dispose(); } break; case MarkStyle.X: { System.Drawing.Pen pen = new System.Drawing.Pen(color, 0); g.DrawLine(pen, cX - d, cY - d, cX + d, cY + d); g.DrawLine(pen, cX + d, cY - d, cX - d, cY + d); pen.Dispose(); } break; case MarkStyle.Circle: { System.Drawing.Pen pen = new System.Drawing.Pen(color, 0); g.DrawEllipse(pen, cX - d, cY - d, 2 * d, 2 * d); pen.Dispose(); } break; case MarkStyle.Rectangle: { System.Drawing.Pen pen = new System.Drawing.Pen(color, 0); g.DrawRectangle(pen, cX - d, cY - d, 2 * d, 2 * d); pen.Dispose(); } break; case MarkStyle.Custom: { customDrawArgs.location = new PointF(cX, cY); customDrawArgs.Node.drawMark(customDrawArgs); } break; } }
internal override void drawAnchors(Graphics g) { base.drawAnchors(g); for (int r = CurrentRow; r < rowsCount; r++) { Row row = rowsList[r]; AnchorPattern pattern = row.AnchorPattern; if (pattern == null) pattern = this.RowAnchorPattern; if (pattern != null) { int i = 0; foreach (AnchorPoint point in pattern.Points) { RectangleF rect = RectangleF.Empty; if (point.Column == -1) rect = getRowRect(r); else rect = getSpannedCellRect(r, point.Column); if (rect.Bottom > this.rect.Bottom) break; MarkDrawArgs args = null; if (point.MarkStyle == MarkStyle.Custom) args = new MarkDrawArgs(g, new PointF(0, 0), this, pattern, i); i++; point.draw(g, rect, 0, args, Constants.getMarkSize(flowChart.MeasureUnit)); } } } }
internal virtual void drawAnchors(Graphics g) { if (anchorPattern == null) return; for (int i = 0; i < anchorPattern.Points.Count; ++i) { AnchorPoint ap = anchorPattern.Points[i]; MarkDrawArgs args = null; if (ap.MarkStyle == MarkStyle.Custom) args = new MarkDrawArgs(g, new PointF(0, 0), this, anchorPattern, i); ap.draw(g, getBoundingRect(), rotation(), args, Constants.getMarkSize(flowChart.MeasureUnit)); } }
internal void drawMark(MarkDrawArgs args) { if (DrawMark != null) DrawMark(this, args); }
internal void draw(Graphics g, RectangleF nodeRect, float angle, MarkDrawArgs customDrawArgs, float markSize) { float cX = nodeRect.X + nodeRect.Width * x / 100; float cY = nodeRect.Y + nodeRect.Height * y / 100; float d = markSize / 2; if (angle != 0) { PointF point = new PointF(cX, cY); point = Utilities.rotatePointAt(point, Utilities.getCenter(nodeRect), angle); cX = point.X; cY = point.Y; } switch (markStyle) { case MarkStyle.Cross: { System.Drawing.Pen pen = new System.Drawing.Pen(color, 0); g.DrawLine(pen, cX - d, cY, cX + d, cY); g.DrawLine(pen, cX, cY - d, cX, cY + d); pen.Dispose(); } break; case MarkStyle.X: { System.Drawing.Pen pen = new System.Drawing.Pen(color, 0); g.DrawLine(pen, cX - d, cY - d, cX + d, cY + d); g.DrawLine(pen, cX + d, cY - d, cX - d, cY + d); pen.Dispose(); } break; case MarkStyle.Circle: { System.Drawing.Pen pen = new System.Drawing.Pen(color, 0); g.DrawEllipse(pen, cX - d, cY - d, 2*d, 2*d); pen.Dispose(); } break; case MarkStyle.Rectangle: { System.Drawing.Pen pen = new System.Drawing.Pen(color, 0); g.DrawRectangle(pen, cX - d, cY - d, 2*d, 2*d); pen.Dispose(); } break; case MarkStyle.Custom: { customDrawArgs.location = new PointF(cX, cY); customDrawArgs.Node.drawMark(customDrawArgs); } break; } }
internal void drawMark(MarkDrawArgs args) { flowChart.drawMark(args); }