private void DrawConnection(DrawingContext dc, Pen pen2, SkillNode n1, SkillNode n2) { if (n1.SkillNodeGroup == n2.SkillNodeGroup && n1.Orbit == n2.Orbit) { if (n1.Arc - n2.Arc > 0 && n1.Arc - n2.Arc <= Math.PI || n1.Arc - n2.Arc < -Math.PI) { dc.DrawArc(null, pen2, n1.Position, n2.Position, new Size(SkillNode.OrbitRadii[n1.Orbit], SkillNode.OrbitRadii[n1.Orbit])); } else { dc.DrawArc(null, pen2, n2.Position, n1.Position, new Size(SkillNode.OrbitRadii[n1.Orbit], SkillNode.OrbitRadii[n1.Orbit])); } } else { if (n2.IsAscendancyStart != true && !n1.Name.Contains("Path of the")) { dc.DrawLine(pen2, n1.Position, n2.Position); } } }
protected override void OnRender(DrawingContext dc) { var lightBrush = new SolidColorBrush(Colors.LightGray); var darkBrush = new SolidColorBrush(Colors.Black); lightBrush.Opacity = 0.4; darkBrush.Opacity = 0.1; double t1 = 6; // thickness of dark circle pen double t2 = 2; // thickness of light pen (circle, arcs, segments) double d = 0; // distance from light circle to segments double l = 10; // length of segments double r = 20.0; // radius of light circle double r1 = r - (t1 + t2) / 2; double r2 = r + l; double r3 = r + t2 / 2 + d; double r4 = (r + r2) / 2; var darkPen = new Pen(darkBrush, t1); var lightPen = new Pen(lightBrush, t2); dc.DrawEllipse(null, lightPen, Position, r, r); dc.DrawEllipse(null, darkPen, Position, r1, r1); dc.DrawArc(null, lightPen, Position, 10, 80, r4, r4); dc.DrawArc(null, lightPen, Position, 100, 170, r4, r4); dc.DrawArc(null, lightPen, Position, 190, 260, r4, r4); dc.DrawArc(null, lightPen, Position, 280, 350, r4, r4); dc.DrawLine(lightPen, new Point(Position.X, Position.Y - r2), new Point(Position.X, Position.Y - r3)); dc.DrawLine(lightPen, new Point(Position.X, Position.Y + r2), new Point(Position.X, Position.Y + r3)); dc.DrawLine(lightPen, new Point(Position.X - r2, Position.Y), new Point(Position.X - r3, Position.Y)); dc.DrawLine(lightPen, new Point(Position.X + r2, Position.Y), new Point(Position.X + r3, Position.Y)); }
public void DrawPrimitives(DrawingContext dc) { // rectangle dc.DrawRectangle(Brushes.Black, null, new Rect(20, 20, 150, 100)); // circle segment dc.DrawArc(new Point(150, 150), radius: 100, 40, 140, new Format(Brushes.Gray, Brushes.Gray, 25)); // parallelogram dc.DrawSpline(new PointCollection { new Point(180, 240), new Point(290, 240), new Point(310, 310), new Point(200, 310) }, 140, 0, BasicFormats.BasicGray); // romb dc.DrawSpline(new PointCollection { new Point(100, 200), new Point(150, 100), new Point(100, 000), new Point(050, 100) }, 500, 70, BasicFormats.BasicGray); // 8-angle figure dc.DrawSpline(new PointCollection { new Point(100, 100), new Point(130, 110), new Point(140, 140), new Point(130, 170), new Point(100, 180), new Point(70, 170), new Point(60, 140), new Point(70, 110), }, 250, 0, BasicFormats.BasicGray); }
protected void DrawArc(DrawingContext drawingContext, double x, double y, double radius, double start, double stop) { Pen pen = new Pen(); pen.Thickness = 2; pen.Brush = brush; drawingContext.DrawArc(pen, null, new Rect(ConvertXPos(x - radius + offsetX), ConvertYPos(y + radius + offsetY), ConvertLen(radius) * 2d, ConvertLen(radius) * 2d), start, stop); }
public static void DrawArc(this DrawingContext dc, Brush brush, Pen pen, Point position, double startAngle, double endAngle, SweepDirection direction, double radiusX, double radiusY) { double startRadians = startAngle / 180 * Math.PI; double endRadians = endAngle / 180 * Math.PI; var start = position + new Vector(Math.Cos(startRadians) * radiusX, -Math.Sin(startRadians) * radiusY); var end = position + new Vector(Math.Cos(endRadians) * radiusX, -Math.Sin(endRadians) * radiusY); dc.DrawArc(brush, pen, start, end, direction, radiusX, radiusY); }
private void DrawConnection(DrawingContext dc, Pen pen2, SkillNode n1, SkillNode n2) { if (n1.SkillNodeGroup == n2.SkillNodeGroup && n1.Orbit == n2.Orbit) { if (n1.Arc - n2.Arc > 0 && n1.Arc - n2.Arc <= Math.PI || n1.Arc - n2.Arc < -Math.PI) { dc.DrawArc(null, pen2, n1.Position, n2.Position, new Size(SkillNode.OrbitRadii[n1.Orbit], SkillNode.OrbitRadii[n1.Orbit])); } else { dc.DrawArc(null, pen2, n2.Position, n1.Position, new Size(SkillNode.OrbitRadii[n1.Orbit], SkillNode.OrbitRadii[n1.Orbit])); } } else { dc.DrawLine(pen2, n1.Position, n2.Position); } }
private void DrawConnection(DrawingContext dc, Pen pen2, SkillNode n1, SkillNode n2) { if (n1.VisibleNeighbors.Contains(n2) && n2.VisibleNeighbors.Contains(n1)) { if (n1.SkillNodeGroup == n2.SkillNodeGroup && n1.Orbit == n2.Orbit) { if (n1.Arc - n2.Arc > 0 && n1.Arc - n2.Arc <= Math.PI || n1.Arc - n2.Arc < -Math.PI) { dc.DrawArc(null, pen2, n1.Position, n2.Position, new Size(SkillNode.OrbitRadii[n1.Orbit], SkillNode.OrbitRadii[n1.Orbit])); } else { dc.DrawArc(null, pen2, n2.Position, n1.Position, new Size(SkillNode.OrbitRadii[n1.Orbit], SkillNode.OrbitRadii[n1.Orbit])); } } else { var draw = true; foreach (var attibute in n1.attributes) { if (AscendantClassStartRegex.IsMatch(attibute)) { draw = false; } } if (draw) { dc.DrawLine(pen2, n1.Position, n2.Position); } } } }
private void DrawBottom(DrawingContext dc, Point gl_coord) { dc.DrawSpline(new PointCollection { new Point(55, 150), new Point(110, -70), new Point(128, -58), new Point(80, 150) }, gl_coord.X - 10, gl_coord.Y, BasicFormats.BlackLine); dc.DrawSpline(new PointCollection { new Point(210, 150), new Point(155, -70), new Point(138, -58), new Point(185, 150) }, gl_coord.X + 10, gl_coord.Y, BasicFormats.BlackLine); for (int i = 0; i <= 12; i++) { if (i % 2 != 0) { dc.DrawRectangle((i == 1 || i == 7 ? Brushes.Red : i == 3 || i == 9 ? Brushes.Yellow : Brushes.Green), null, new Rect( x: gl_coord.X + (i * 20.25), y: gl_coord.Y + 150, width: 20.25, height: 40)); } if (i != 0) { dc.DrawRectangle(Brushes.DarkGray, null, new Rect( x: gl_coord.X + (i * 20.25), y: gl_coord.Y + 150, width: 2, height: 20)); dc.DrawRectangle(Brushes.Black, null, new Rect( x: gl_coord.X + (i * 20.25), y: gl_coord.Y + 150 + 20, width: 2, height: 20)); } dc.DrawArc(new Point(gl_coord.X + 10 + (i * 20.25), gl_coord.Y + 150), radius: 10, 0, 180, BasicFormats.BlackWithWhiteThin); } dc.DrawRectangle(null, new Pen(Brushes.Black, 3), new Rect(gl_coord.X, gl_coord.Y + 150, width: 265, height: 40)); }
private void DrawCabin(DrawingContext dc, Point gl_coord) { int cabin_in_rad = 25; dc.DrawArc(new Point(gl_coord.X, gl_coord.Y + 35), cabin_in_rad, 0, 180, BasicFormats.BlackLineBold); for (int i = -1; i <= 1; i++) { dc.DrawLine(new Pen(Brushes.Black, 4), new Point(gl_coord.X + i * cabin_in_rad, gl_coord.Y + 35 + (i == 0 ? cabin_in_rad : 0)), new Point(gl_coord.X + i * cabin_in_rad, gl_coord.Y + 43 - cabin_in_rad)); } dc.DrawLine(new Pen(Brushes.Black, 4), new Point(gl_coord.X - cabin_in_rad, gl_coord.Y + 20), new Point(gl_coord.X + cabin_in_rad, gl_coord.Y + 20)); dc.DrawRoundedRectangle(null, new Pen(Brushes.Black, 5), new Rect(gl_coord.X - 40 / 2, gl_coord.Y - 40 / 2, width: 40, height: 40), 5, 3); }
public void refreshDrawingContext(DrawingContext dc) { var rect = new Rect(0, 0, Bounds.Width, Bounds.Height); dc.DrawArc(info.DrawingObjects.Pen, info.DrawingObjects.Brush, rect, 160, -140); }