public void BorderedCircle(float x, float y, float radius, float stroke, Direct2DBrush brush, Direct2DBrush borderBrush) { var ellipse = new Ellipse(new RawVector2(x, y), radius, radius); _device.DrawEllipse(ellipse, brush, stroke); float half = stroke / 2.0f; ellipse.RadiusX += half; ellipse.RadiusY += half; _device.DrawEllipse(ellipse, borderBrush, half); ellipse.RadiusX -= stroke; ellipse.RadiusY -= stroke; _device.DrawEllipse(ellipse, borderBrush, half); }
public void DrawBox2D(float x, float y, float width, float height, float stroke, Direct2DBrush interiorBrush, Direct2DBrush brush) { var geometry = new PathGeometry(_factory); var sink = geometry.Open(); sink.BeginFigure(new RawVector2(x, y), FigureBegin.Filled); sink.AddLine(new RawVector2(x + width, y)); sink.AddLine(new RawVector2(x + width, y + height)); sink.AddLine(new RawVector2(x, y + height)); sink.EndFigure(FigureEnd.Closed); sink.Close(); _device.DrawGeometry(geometry, brush, stroke); _device.FillGeometry(geometry, interiorBrush); sink.Dispose(); geometry.Dispose(); }
public void DrawArrowLine(float start_x, float start_y, float end_x, float end_y, float size, Direct2DBrush brush) { float delta_x = end_x >= start_x ? end_x - start_x : start_x - end_x; float delta_y = end_y >= start_y ? end_y - start_y : start_y - end_y; float length = (float)Math.Sqrt(delta_x * delta_x + delta_y * delta_y); float xm = length - size; float xn = xm; float ym = size; float yn = -ym; float sin = delta_y / length; float cos = delta_x / length; float x = xm * cos - ym * sin + end_x; ym = xm * sin + ym * cos + end_y; xm = x; x = xn * cos - yn * sin + end_x; yn = xn * sin + yn * cos + end_y; xn = x; FillTriangle(start_x, start_y, xm, ym, xn, yn, brush); }
public void FillTriangle(float a_x, float a_y, float b_x, float b_y, float c_x, float c_y, Direct2DBrush brush) { var geometry = new PathGeometry(_factory); var sink = geometry.Open(); sink.BeginFigure(new RawVector2(a_x, a_y), FigureBegin.Filled); sink.AddLine(new RawVector2(b_x, b_y)); sink.AddLine(new RawVector2(c_x, c_y)); sink.EndFigure(FigureEnd.Closed); sink.Close(); _device.FillGeometry(geometry, brush); sink.Dispose(); geometry.Dispose(); }
public void BorderedRectangle(float x, float y, float width, float height, float stroke, Direct2DBrush brush, Direct2DBrush borderBrush) { float half = stroke / 2.0f; width += x; height += y; _device.DrawRectangle(new RawRectangleF(x - half, y - half, width + half, height + half), borderBrush, half); _device.DrawRectangle(new RawRectangleF(x + half, y + half, width - half, height - half), borderBrush, half); _device.DrawRectangle(new RawRectangleF(x, y, width, height), brush, half); }
public void BorderedLine(float start_x, float start_y, float end_x, float end_y, float stroke, Direct2DBrush brush, Direct2DBrush borderBrush) { var geometry = new PathGeometry(_factory); var sink = geometry.Open(); float half = stroke / 2.0f; float quarter = half / 2.0f; sink.BeginFigure(new RawVector2(start_x, start_y - half), FigureBegin.Filled); sink.AddLine(new RawVector2(end_x, end_y - half)); sink.AddLine(new RawVector2(end_x, end_y + half)); sink.AddLine(new RawVector2(start_x, start_y + half)); sink.EndFigure(FigureEnd.Closed); sink.Close(); _device.DrawGeometry(geometry, borderBrush, half); _device.FillGeometry(geometry, brush); sink.Dispose(); geometry.Dispose(); }
public void DrawText(string text, float x, float y, float fontSize, Direct2DFont font, Direct2DBrush brush) { var layout = new TextLayout(_fontFactory, text, font, float.MaxValue, float.MaxValue); layout.SetFontSize(fontSize, new TextRange(0, text.Length)); _device.DrawTextLayout(new RawVector2(x, y), layout, brush, DrawTextOptions.NoSnap); layout.Dispose(); }
public void DrawRectangleEdges(float x, float y, float width, float height, float stroke, Direct2DBrush brush) { int length = (int)(((width + height) / 2.0f) * 0.2f); RawVector2 first = new RawVector2(x, y); RawVector2 second = new RawVector2(x, y + length); RawVector2 third = new RawVector2(x + length, y); _device.DrawLine(first, second, brush, stroke); _device.DrawLine(first, third, brush, stroke); first.Y += height; second.Y = first.Y - length; third.Y = first.Y; third.X = first.X + length; _device.DrawLine(first, second, brush, stroke); _device.DrawLine(first, third, brush, stroke); first.X = x + width; first.Y = y; second.X = first.X - length; second.Y = first.Y; third.X = first.X; third.Y = first.Y + length; _device.DrawLine(first, second, brush, stroke); _device.DrawLine(first, third, brush, stroke); first.Y += height; second.X += length; second.Y = first.Y - length; third.Y = first.Y; third.X = first.X - length; _device.DrawLine(first, second, brush, stroke); _device.DrawLine(first, third, brush, stroke); }
public void FillEllipse(float x, float y, float radius_x, float radius_y, Direct2DBrush brush) { _device.FillEllipse(new Ellipse(new RawVector2(x, y), radius_x, radius_y), brush); }
public void DrawLine(float start_x, float start_y, float end_x, float end_y, float stroke, Direct2DBrush brush) { _device.DrawLine(new RawVector2(start_x, start_y), new RawVector2(end_x, end_y), brush, stroke); }
public void DrawRectangle(float x, float y, float width, float height, float stroke, Direct2DBrush brush) { _device.DrawRectangle(new RawRectangleF(x, y, x + width, y + height), brush, stroke); }
public void DrawEllipse(float x, float y, float radius_x, float radius_y, float stroke, Direct2DBrush brush) { _device.DrawEllipse(new Ellipse(new RawVector2(x, y), radius_x, radius_y), brush, stroke); }
public void ClearScene(Direct2DBrush brush) { _device.Clear(brush); }
public void DrawTextWithBackground(string text, float x, float y, float fontSize, Direct2DFont font, Direct2DBrush brush, Direct2DBrush backgroundBrush) { var layout = new TextLayout(_fontFactory, text, font, float.MaxValue, float.MaxValue); layout.SetFontSize(fontSize, new TextRange(0, text.Length)); float modifier = fontSize / 4.0f; _device.FillRectangle(new RawRectangleF(x - modifier, y - modifier, x + layout.Metrics.Width + modifier, y + layout.Metrics.Height + modifier), backgroundBrush); _device.DrawTextLayout(new RawVector2(x, y), layout, brush, DrawTextOptions.NoSnap); layout.Dispose(); }
public void DrawCrosshair(CrosshairStyle style, float x, float y, float size, float stroke, Direct2DBrush brush) { if (style == CrosshairStyle.Dot) { FillCircle(x, y, size, brush); } else if (style == CrosshairStyle.Plus) { DrawLine(x - size, y, x + size, y, stroke, brush); DrawLine(x, y - size, x, y + size, stroke, brush); } else if (style == CrosshairStyle.Cross) { DrawLine(x - size, y - size, x + size, y + size, stroke, brush); DrawLine(x + size, y - size, x - size, y + size, stroke, brush); } else if (style == CrosshairStyle.Gap) { DrawLine(x - size - stroke, y, x - stroke, y, stroke, brush); DrawLine(x + size + stroke, y, x + stroke, y, stroke, brush); DrawLine(x, y - size - stroke, x, y - stroke, stroke, brush); DrawLine(x, y + size + stroke, x, y + stroke, stroke, brush); } else if (style == CrosshairStyle.Diagonal) { DrawLine(x - size, y - size, x + size, y + size, stroke, brush); DrawLine(x + size, y - size, x - size, y + size, stroke, brush); } else if (style == CrosshairStyle.Swastika) { RawVector2 first = new RawVector2(x - size, y); RawVector2 second = new RawVector2(x + size, y); RawVector2 third = new RawVector2(x, y - size); RawVector2 fourth = new RawVector2(x, y + size); RawVector2 haken_1 = new RawVector2(third.X + size, third.Y); RawVector2 haken_2 = new RawVector2(second.X, second.Y + size); RawVector2 haken_3 = new RawVector2(fourth.X - size, fourth.Y); RawVector2 haken_4 = new RawVector2(first.X, first.Y - size); _device.DrawLine(first, second, brush, stroke); _device.DrawLine(third, fourth, brush, stroke); _device.DrawLine(third, haken_1, brush, stroke); _device.DrawLine(second, haken_2, brush, stroke); _device.DrawLine(fourth, haken_3, brush, stroke); _device.DrawLine(first, haken_4, brush, stroke); } }
public void FillRectangle(float x, float y, float width, float height, Direct2DBrush brush) { _device.FillRectangle(new RawRectangleF(x, y, x + width, y + height), brush); }
public void DrawHorizontalBar(float percentage, float x, float y, float width, float height, float stroke, Direct2DBrush interiorBrush, Direct2DBrush brush) { float half = stroke / 2.0f; float quarter = half / 2.0f; var rect = new RawRectangleF(x - half, y - half, x + width + half, y + height + half); _device.DrawRectangle(rect, brush, half); if (percentage == 0.0f) { return; } rect.Left += quarter; rect.Right -= quarter; rect.Top += height - (height / 100.0f * percentage) + quarter; rect.Bottom -= quarter; _device.FillRectangle(rect, interiorBrush); }
public void DrawText(string text, float x, float y, Direct2DFont font, Direct2DBrush brush) { _device.DrawText(text, text.Length, font, new RawRectangleF(x, y, float.MaxValue, float.MaxValue), brush, DrawTextOptions.NoSnap, MeasuringMode.Natural); }