public override void Draw(Graphics2D g) { int width = 800; int height = 600; //clear the image to white g.Clear(ColorRGBA.White); // draw a circle Ellipse ellipsePro = new Ellipse(0, 0, 100, 50); for (double angleDegrees = 0; angleDegrees < 180; angleDegrees += 22.5) { var mat = Affine.NewMatix( AffinePlan.Rotate(MathHelper.DegreesToRadians(angleDegrees)), AffinePlan.Translate(width / 2, 150)); VertexStore sp1 = mat.TransformToVxs(ellipsePro.MakeVxs()); g.Render(sp1, ColorRGBA.Yellow); //Stroke ellipseOutline = new Stroke(sp1, 3); g.Render(StrokeHelp.MakeVxs(sp1, 3), ColorRGBA.Blue); } // and a little polygon PathWriter littlePoly = new PathWriter(); littlePoly.MoveTo(50, 50); littlePoly.LineTo(150, 50); littlePoly.LineTo(200, 200); littlePoly.LineTo(50, 150); littlePoly.LineTo(50, 50); g.Render(littlePoly.MakeVertexSnap(), ColorRGBA.Cyan); // draw some text // draw some text var textPrinter = new TextPrinter(); textPrinter.CurrentFont = SvgFontStore.LoadFont(SvgFontStore.DEFAULT_SVG_FONTNAME, 30); //new TypeFacePrinter("Printing from a printer", 30, justification: Justification.Center); VertexStore vxs = textPrinter.CreateVxs("Printing from a printer".ToCharArray()); var affTx = Affine.NewTranslation(width / 2, height / 4 * 3); VertexStore s1 = affTx.TransformToVxs(vxs); g.Render(s1, ColorRGBA.Black); g.Render(StrokeHelp.MakeVxs(s1, 1), ColorRGBA.Red); var aff2 = Affine.NewMatix( AffinePlan.Rotate(MathHelper.DegreesToRadians(90)), AffinePlan.Translate(40, height / 2)); g.Render(aff2.TransformToVertexSnap(vxs), ColorRGBA.Black); }
public void OnDraw(Graphics2D graphics2D) { var widgetsSubImage = ImageHelper.CreateChildImage(graphics2D.DestImage, graphics2D.GetClippingRect()); graphics2D.UseSubPixelRendering = false; IPixelBlender NormalBlender = new PixelBlenderBGRA(); IPixelBlender GammaBlender = new PixelBlenderGammaBGRA(this.GammaValue); var rasterGamma = new ChildImage(widgetsSubImage, GammaBlender); ClipProxyImage clippingProxyNormal = new ClipProxyImage(widgetsSubImage); ClipProxyImage clippingProxyGamma = new ClipProxyImage(rasterGamma); clippingProxyNormal.Clear(ColorRGBA.White); var rasterizer = graphics2D.ScanlineRasterizer; ScanlineUnpacked8 sl = new ScanlineUnpacked8(); int size_mul = (int)this.PixelSize; CustomScanlineRasToBmp_EnlargedV3 ren_en = new CustomScanlineRasToBmp_EnlargedV3(size_mul, graphics2D.DestActualImage); rasterizer.Reset(); rasterizer.MoveTo(m_x[0] / size_mul, m_y[0] / size_mul); rasterizer.LineTo(m_x[1] / size_mul, m_y[1] / size_mul); rasterizer.LineTo(m_x[2] / size_mul, m_y[2] / size_mul); ren_en.RenderWithColor(clippingProxyGamma, rasterizer, sl, ColorRGBA.Black); //---------------------------------------- ScanlineRasToDestBitmapRenderer sclineRasToBmp = graphics2D.ScanlineRasToDestBitmap; graphics2D.UseSubPixelRendering = true; sclineRasToBmp.RenderWithColor(clippingProxyGamma, rasterizer, sl, ColorRGBA.Black); rasterizer.ResetGamma(new GammaNone()); graphics2D.UseSubPixelRendering = false; //---------------------------------------- PathWriter ps = new PathWriter(); ps.Clear(); ps.MoveTo(m_x[0], m_y[0]); ps.LineTo(m_x[1], m_y[1]); ps.LineTo(m_x[2], m_y[2]); ps.LineTo(m_x[0], m_y[0]); //---------------------------------------- //Stroke stroke = new Stroke(ps); //stroke.Width = 2; //rasterizer.AddPath(stroke.MakeVxs(ps.MakeVxs())); rasterizer.AddPath(StrokeHelp.MakeVxs(ps.Vxs, 2)); //---------------------------------------- sclineRasToBmp.RenderWithColor(clippingProxyNormal, rasterizer, sl, new ColorRGBA(0, 150, 160, 200)); }