public static VertexStore ScaleToNewVxs(this VertexStore src, double sx, double sy, VertexStore outputVxs) { return(AffineMat.GetScaleMat(sx, sy).TransformToVxs(src, outputVxs)); ////TODO: review here, use struct mat //Affine aff = Affine.NewScaling(sx, sy); //return aff.TransformToVxs(src, outputVxs); }
public void WriteUnFlattenOutput(VertexStore output, float scale) { if (scale == 1) { output.AppendVertexStore(_vxs); } else { AffineMat.GetScaleMat(scale).TransformToVxs(_vxs, output); } }
/// <summary> /// write output to vxs, use user's curve flattener /// </summary> /// <param name="output"></param> /// <param name="scale"></param> public void WriteOutput(VertexStore output, CurveFlattener curveFlattener, float scale = 1) { if (scale == 1) { curveFlattener.MakeVxs(_vxs, output); } else { AffineMat mat = AffineMat.GetScaleMat(scale); curveFlattener.MakeVxs(_vxs, mat, output); } }
MemBitmap CreateHalfSize(MemBitmap orgBmp) { //TODO: ... // //1. create a new one MemBitmap smallBmp = new MemBitmap(orgBmp.Width / 2, orgBmp.Height / 2); using (Tools.BorrowAggPainter(smallBmp, out var painter)) { AffineMat mat = AffineMat.GetScaleMat(0.5); painter.DrawImage(orgBmp, mat); } return smallBmp; }
public GradientDemo() { //solid brush _solidBrush = new SolidBrush(Color.Blue); //1. linear gradient _linearGrBrush = new LinearGradientBrush( new PointF(0, 0), new PointF(200, 200), new ColorStop[] { new ColorStop(0.0f, Drawing.Color.Black), new ColorStop(0.20f, Drawing.Color.Red), new ColorStop(0.50f, Drawing.KnownColors.OrangeRed), new ColorStop(0.75f, Drawing.Color.Yellow) }); //2. circular gradient _circularGrBrush = new RadialGradientBrush( new PointF(50, 20), new PointF(300, 20), new ColorStop[] { //for test different colors new ColorStop(0.0f, Drawing.Color.Yellow), new ColorStop(0.25f, Drawing.Color.Blue), new ColorStop(0.50f, Drawing.Color.Green), new ColorStop(0.75f, Drawing.Color.Yellow), }); //3. polygon gradient: this version, just a simple rect //PolygonGradientBrush.ColorVertex2d[] vertices = new PolygonGradientBrush.ColorVertex2d[] // { // new PolygonGradientBrush.ColorVertex2d(5,50,KnownColors.OrangeRed), // new PolygonGradientBrush.ColorVertex2d(50,50,Color.Black), // new PolygonGradientBrush.ColorVertex2d(50,5,Color.Yellow), // new PolygonGradientBrush.ColorVertex2d(5,5,Color.Blue), // }; //PolygonGradientBrush.ColorVertex2d[] vertices = new PolygonGradientBrush.ColorVertex2d[] //{ // new PolygonGradientBrush.ColorVertex2d(5,300,KnownColors.OrangeRed), // new PolygonGradientBrush.ColorVertex2d(300,300,Color.Black), // new PolygonGradientBrush.ColorVertex2d(300,5,Color.Yellow), // new PolygonGradientBrush.ColorVertex2d(5,5,Color.Blue), //}; //PolygonGradientBrush.ColorVertex2d[] vertices = new PolygonGradientBrush.ColorVertex2d[] //{ // new PolygonGradientBrush.ColorVertex2d(5,5,Color.Blue), // new PolygonGradientBrush.ColorVertex2d(220,5,Color.Yellow), // new PolygonGradientBrush.ColorVertex2d(220,100,Color.Black), // new PolygonGradientBrush.ColorVertex2d(5,220,KnownColors.OrangeRed), //}; PolygonGradientBrush.ColorVertex2d[] vertices = new PolygonGradientBrush.ColorVertex2d[] { new PolygonGradientBrush.ColorVertex2d(0, 0, Color.Blue), new PolygonGradientBrush.ColorVertex2d(300, 0, Color.Yellow), new PolygonGradientBrush.ColorVertex2d(300, 300, Color.Black), new PolygonGradientBrush.ColorVertex2d(0, 300, KnownColors.OrangeRed), }; _polygonGradientBrush = new PolygonGradientBrush(vertices); using (Tools.BorrowVxs(out var v1, out var v2)) using (Tools.BorrowPathWriter(v1, out PathWriter p)) { p.MoveTo(0, 0); p.LineTo(50, 20); p.LineTo(10, 100); p.CloseFigure(); AffineMat aff1 = AffineMat.GetScaleMat(2); _triangleVxs = v1.CreateTrim(aff1); AffineMat tx = AffineMat.GetTranslateMat(200, 220); _triangleVxs2 = tx.TransformToVxs(_triangleVxs, v2).CreateTrim(); } }