public MarkerMenuItem(DMarker marker, EventHandler onClick) : base() { DisplayStyle = ToolStripItemDisplayStyle.ImageAndText; Text = "XXXXXXX"; Click += onClick; this.value = marker; }
public DAuthorProperties() { fill = DColor.White; stroke = DColor.Black; strokeWidth = 1; strokeStyle = DStrokeStyle.Solid; startMarker = DMarker.None; endMarker = DMarker.None; alpha = 1; fontName = "Arial"; fontSize = 14; bold = false; italics = false; underline = false; strikethrough = false; }
void btnMarker_MarkerChanged(object sender, DMarker marker) { if (sender == btnStartMarker) { if (de != null && de.HsmState == DHsmState.Select) UpdateSelectedFigures(btnStartMarker); else dap.StartMarker = btnStartMarker.Value; } else if (sender == btnEndMarker) { if (de != null && de.HsmState == DHsmState.Select) UpdateSelectedFigures(btnEndMarker); else dap.EndMarker = btnEndMarker.Value; } }
void MenuItem_OnClick(object sender, EventArgs e) { Value = ((MarkerMenuItem)sender).Value; if (MarkerChanged != null) MarkerChanged(this, ((MarkerMenuItem)sender).Value); }
public static void DrawMarkerIcon(Graphics g, Rectangle r, Color color, DMarker marker, bool start) { const int sz = 8; const int hsz = sz / 2; int mid = r.Height / 2 + 1; Pen p = new Pen(color, sz / 2); Brush b = new SolidBrush(color); switch (marker) { case DMarker.None: break; case DMarker.Arrow: if (start) g.FillPolygon(b, new Point[3] { new Point(r.Left, mid), new Point(r.Left + sz, mid - hsz), new Point(r.Left + sz, mid + hsz)}); else g.FillPolygon(b, new Point[3] { new Point(r.Right, mid), new Point(r.Right - sz, mid - hsz), new Point(r.Right - sz, mid + hsz)}); break; case DMarker.Dot: if (start) g.FillEllipse(b, new Rectangle(r.Left, mid - hsz, sz, sz)); else g.FillEllipse(b, new Rectangle(r.Right - sz, mid - hsz, sz, sz)); break; case DMarker.Square: if (start) g.FillRectangle(b, new Rectangle(r.Left, mid - hsz, sz, sz)); else g.FillRectangle(b, new Rectangle(r.Right - sz, mid - hsz, sz, sz)); break; case DMarker.Diamond: if (start) g.FillPolygon(b, new Point[4] { new Point(r.Left + hsz, mid - hsz), new Point(r.Left + sz, mid), new Point(r.Left + hsz, mid + hsz), new Point(r.Left, mid)}); else g.FillPolygon(b, new Point[4] { new Point(r.Right - hsz, mid - hsz), new Point(r.Right - sz, mid), new Point(r.Right - hsz, mid + hsz), new Point(r.Right, mid)}); break; } PointF pt1, pt2; if (start) { pt1 = new PointF(r.X + hsz, mid); pt2 = new PointF(r.Right, mid); } else { pt1 = new PointF(r.Right - hsz, mid); pt2 = new PointF(r.Left, mid); } g.DrawLine(p, pt1, pt2); }
public void SetProperties(Type figureClass, DAuthorProperties dap) { if (typeof(IFillable).IsAssignableFrom(figureClass)) this.fill = dap.Fill; if (typeof(IStrokeable).IsAssignableFrom(figureClass)) { this.stroke = dap.Stroke; this.strokeWidth = dap.StrokeWidth; this.strokeStyle = dap.StrokeStyle; } if (typeof(IMarkable).IsAssignableFrom(figureClass)) { this.startMarker = dap.StartMarker; this.endMarker = dap.EndMarker; } if (typeof(IAlphaBlendable).IsAssignableFrom(figureClass)) this.alpha = dap.Alpha; if (typeof(ITextable).IsAssignableFrom(figureClass)) { this.fontName = dap.FontName; this.fontSize = dap.FontSize; this.bold = dap.Bold; this.italics = dap.Italics; this.underline = dap.Underline; this.strikethrough = dap.Strikethrough; } DoPropertyChanged(); }
public void SetProperties(DAuthorProperties dap) { this.fill = dap.Fill; this.stroke = dap.Stroke; this.strokeWidth = dap.StrokeWidth; this.strokeStyle = dap.StrokeStyle; this.startMarker = dap.StartMarker; this.endMarker = dap.EndMarker; this.alpha = dap.Alpha; this.fontName = dap.FontName; this.fontSize = dap.FontSize; this.bold = dap.Bold; this.italics = dap.Italics; this.underline = dap.Underline; this.strikethrough = dap.Strikethrough; DoPropertyChanged(); }
public void SetProperties(DColor fill, DColor stroke, double strokeWidth, DStrokeStyle strokeStyle, DMarker startMarker, DMarker endMarker, double alpha, string fontName, double fontSize, bool bold, bool italics, bool underline, bool strikethrough) { this.fill = fill; this.stroke = stroke; this.strokeWidth = strokeWidth; this.strokeStyle = strokeStyle; this.startMarker = startMarker; this.endMarker = endMarker; this.alpha = alpha; this.fontName = fontName; this.fontSize = fontSize; this.bold = bold; this.italics = italics; this.underline = underline; this.strikethrough = strikethrough; DoPropertyChanged(); }
public static DPoints MarkerPoints(DMarker marker, DPoint center, DPoint fromPoint, double size) { return MarkerPoints(marker, center, DGeom.AngleBetweenPoints(fromPoint, center) - DGeom.HalfPi, size); }
public static DPoints MarkerPoints(DMarker marker, DPoint center, double angle, double size) { double hsz = size / 2; DPoints pts = new DPoints(); DPoint pt; switch (marker) { case DMarker.Arrow: pt = DGeom.PointFromAngle(center, angle, hsz); pts.Add(pt); pt = DGeom.PointFromAngle(pt, angle + DGeom.HalfPi, hsz); pt = DGeom.PointFromAngle(pt, angle + Math.PI, size); pts.Add(pt); pt = DGeom.PointFromAngle(pt, angle - DGeom.HalfPi, size); pts.Add(pt); break; case DMarker.Dot: int n = (int)Math.Round(size); if (n < 4) n = 4; double angleSegment = (Math.PI * 2) / n; for (int i = 0; i < n; i++) pts.Add(DGeom.PointFromAngle(center, angle + angleSegment * i, hsz)); break; case DMarker.Square: pt = DGeom.PointFromAngle(center, angle, hsz); pt = DGeom.PointFromAngle(pt, angle + DGeom.HalfPi, hsz); pts.Add(pt); pt = DGeom.PointFromAngle(pt, angle + Math.PI, size); pts.Add(pt); pt = DGeom.PointFromAngle(pt, angle - DGeom.HalfPi, size); pts.Add(pt); pt = DGeom.PointFromAngle(pt, angle, size); pts.Add(pt); break; case DMarker.Diamond: pt = DGeom.PointFromAngle(center, angle, hsz); pts.Add(pt); pt = DGeom.PointFromAngle(pt, angle + DGeom.HalfPi, hsz); pt = DGeom.PointFromAngle(pt, angle + Math.PI, hsz); pts.Add(pt); pt = DGeom.PointFromAngle(pt, angle + Math.PI, hsz); pt = DGeom.PointFromAngle(pt, angle - DGeom.HalfPi, hsz); pts.Add(pt); pt = DGeom.PointFromAngle(pt, angle - DGeom.HalfPi, hsz); pt = DGeom.PointFromAngle(pt, angle, hsz); pts.Add(pt); break; } return pts; }