/// <summary> /// Draws a Polygon. /// </summary> /// <param name="pen">The Pen.</param> /// <param name="polygon">The Polygon.</param> public void DrawPolygon(Pen pen, Polygon polygon) { var dxPen = pen.Instance as DirectXPen; if (dxPen == null) { throw new ArgumentException("DirectX11 expects a DirectXPen as resource."); } var geometry = new PathGeometry(DirectXHelper.D2DFactory); using (GeometrySink sink = geometry.Open()) { sink.BeginFigure(DirectXHelper.ConvertVector(polygon.Points[0]), FigureBegin.Hollow); for (int i = 1; i < polygon.Points.Length; i++) { sink.AddLine(DirectXHelper.ConvertVector(polygon.Points[i])); } sink.EndFigure(FigureEnd.Closed); sink.Close(); DirectXHelper.RenderTarget.DrawGeometry(geometry, dxPen.GetPen(), dxPen.Width); } geometry.Dispose(); }
/// <summary> /// Draws a Line between two points. /// </summary> /// <param name="pen">The Pen.</param> /// <param name="start">The Startpoint.</param> /// <param name="target">The Targetpoint.</param> public void DrawLine(Pen pen, Vector2 start, Vector2 target) { var dxPen = pen.Instance as DirectXPen; if (dxPen == null) { throw new ArgumentException("DirectX11 expects a DirectXPen as resource."); } DirectXHelper.RenderTarget.DrawLine(DirectXHelper.ConvertVector(start), DirectXHelper.ConvertVector(target), dxPen.GetPen(), dxPen.Width); }
/// <summary> /// Sets the Transform. /// </summary> /// <param name="matrix">The Matrix.</param> public void SetTransform(Matrix2x3 matrix) { var dxMatrix = new Matrix3x2 { TranslationVector = DirectXHelper.ConvertVector(new Vector2(matrix.OffsetX, matrix.OffsetY)), ScaleVector = DirectXHelper.ConvertVector(new Vector2(matrix[0, 0], matrix[1, 1])), M12 = matrix[1, 0], M21 = matrix[0, 1] }; DirectXHelper.RenderTarget.Transform = dxMatrix; }
/// <summary> /// Fills a Polygon. /// </summary> /// <param name="color">The Color.</param> /// <param name="polygon">The Polygon.</param> public void FillPolygon(Color color, Polygon polygon) { var geometry = new PathGeometry(DirectXHelper.D2DFactory); using (GeometrySink sink = geometry.Open()) { sink.BeginFigure(DirectXHelper.ConvertVector(polygon.Points[0]), FigureBegin.Filled); for (int i = 1; i < polygon.Points.Length; i++) { sink.AddLine(DirectXHelper.ConvertVector(polygon.Points[i])); } sink.EndFigure(FigureEnd.Closed); sink.Close(); DirectXHelper.RenderTarget.FillGeometry(geometry, new SolidColorBrush(DirectXHelper.RenderTarget, DirectXHelper.ConvertColor(color))); } geometry.Dispose(); }