public void DrawImage(DUIImage image, PointF[] polygon, GraphicsUnit srcUnit, float opacity) { image.RenderTarget = this.target; using (DirectUI.Common.DUIBitmapBrush dbs = new DirectUI.Common.DUIBitmapBrush(image, DUIExtendMode.Clamp, opacity)) using (SharpDX.Direct2D1.PathGeometry pathGeometry = new SharpDX.Direct2D1.PathGeometry(this.target.RenderTarget.Factory)) using (SharpDX.Direct2D1.GeometrySink gs1 = pathGeometry.Open()) { dbs.RenderTarget = this.target; gs1.SetFillMode(SharpDX.Direct2D1.FillMode.Alternate); gs1.BeginFigure(DxConvert.ToVector2(polygon[0]), SharpDX.Direct2D1.FigureBegin.Filled); for (int i = 1; i < polygon.Length; i++) { gs1.AddLine(DxConvert.ToVector2(polygon[i])); } gs1.EndFigure(SharpDX.Direct2D1.FigureEnd.Closed); gs1.Close(); this.target.RenderTarget.FillGeometry(pathGeometry, dbs); } }
public void DrawImage(DUIImage image, PointF[] destTriangle, PointF[] srcTriangle, GraphicsUnit srcUnit, float opacity) { PointF t1 = destTriangle[0]; PointF t2 = destTriangle[1]; PointF t3 = destTriangle[2]; image.RenderTarget = this.target; using (DirectUI.Common.DUIBitmapBrush dbs = new DirectUI.Common.DUIBitmapBrush(image, DUIExtendMode.Clamp, opacity)) using (SharpDX.Direct2D1.PathGeometry pathGeometry = new SharpDX.Direct2D1.PathGeometry(this.target.RenderTarget.Factory)) using (SharpDX.Direct2D1.GeometrySink gs1 = pathGeometry.Open()) { dbs.RenderTarget = this.target; gs1.SetFillMode(SharpDX.Direct2D1.FillMode.Alternate); gs1.BeginFigure(DxConvert.ToVector2(t1), SharpDX.Direct2D1.FigureBegin.Filled); gs1.AddLine(DxConvert.ToVector2(t2)); gs1.AddLine(DxConvert.ToVector2(t3)); gs1.EndFigure(SharpDX.Direct2D1.FigureEnd.Closed); gs1.Close(); dbs.Transform = MatrixTools.ThreePointsAffine(srcTriangle, destTriangle); this.target.RenderTarget.FillGeometry(pathGeometry, dbs); } }