void RenderWithTextPrinterAndMiniAgg(Typeface typeface, string str, float sizeInPoint, int resolution) { //1. TextPrinter printer = new TextPrinter(); printer.EnableKerning = this.chkKern.Checked; int len = str.Length; GlyphPlan[] glyphPlanList = new GlyphPlan[len]; printer.Print(typeface, sizeInPoint, str, glyphPlanList); //-------------------------- //5. use PixelFarm's Agg to render to bitmap... //5.1 clear background p.Clear(PixelFarm.Drawing.Color.White); if (chkFillBackground.Checked) { //5.2 p.FillColor = PixelFarm.Drawing.Color.Black; //5.3 int glyphListLen = glyphPlanList.Length; float ox = p.OriginX; float oy = p.OriginY; float cx = 0; float cy = 10; for (int i = 0; i < glyphListLen; ++i) { GlyphPlan glyphPlan = glyphPlanList[i]; cx = glyphPlan.x; p.SetOrigin(cx, cy); p.Fill(glyphPlan.vxs); } p.SetOrigin(ox, oy); } if (chkBorder.Checked) { //5.4 p.StrokeColor = PixelFarm.Drawing.Color.Green; //user can specific border width here... //p.StrokeWidth = 2; //5.5 int glyphListLen = glyphPlanList.Length; for (int i = 0; i < glyphListLen; ++i) { GlyphPlan glyphPlan = glyphPlanList[i]; p.Draw(glyphPlan.vxs); } } //6. use this util to copy image from Agg actual image to System.Drawing.Bitmap BitmapHelper.CopyToWindowsBitmap(destImg, winBmp, new RectInt(0, 0, 300, 300)); //--------------- //7. just render our bitmap g.Clear(Color.White); g.DrawImage(winBmp, new Point(10, 0)); //-------------------------- }
void RenderWithTextPrinterAndMiniAgg(string fontfile, string str, float sizeInPoint, int resolution) { //1. if (printer2 == null) { printer2 = new TextPrinter(); printer2.ScriptLang = ScriptLangs.Thai; } printer2.FontFile = fontfile; // printer2.EnableLigature = this.chkGsubEnableLigature.Checked; printer2.PositionTechnique = (PositionTecnhique)cmbPositionTech.SelectedItem; //printer.EnableTrueTypeHint = this.chkTrueTypeHint.Checked; //printer.UseAggVerticalHinting = this.chkVerticalHinting.Checked; // int len = str.Length; // List <GlyphPlan> glyphPlanList = new List <GlyphPlan>(len); printer2.Print(sizeInPoint, str, glyphPlanList); //-------------------------- //5. use PixelFarm's Agg to render to bitmap... //5.1 clear background p.Clear(PixelFarm.Drawing.Color.White); //--------------------------- //TODO: review here //fake subpixel rendering //not correct p.UseSubPixelRendering = chkLcdTechnique.Checked; //--------------------------- if (chkFillBackground.Checked) { //5.2 p.FillColor = PixelFarm.Drawing.Color.Black; //5.3 int glyphListLen = glyphPlanList.Count; float ox = p.OriginX; float oy = p.OriginY; float cx = 0; float cy = 10; for (int i = 0; i < glyphListLen; ++i) { GlyphPlan glyphPlan = glyphPlanList[i]; cx = glyphPlan.x; cy = glyphPlan.y; p.SetOrigin(cx, cy); p.Fill((VertexStore)glyphPlan.vxs); } p.SetOrigin(ox, oy); } if (chkBorder.Checked) { //5.4 p.StrokeColor = PixelFarm.Drawing.Color.Green; //user can specific border width here... //p.StrokeWidth = 2; //5.5 int glyphListLen = glyphPlanList.Count; float ox = p.OriginX; float oy = p.OriginY; float cx = 0; float cy = 10; for (int i = 0; i < glyphListLen; ++i) { GlyphPlan glyphPlan = glyphPlanList[i]; cx = glyphPlan.x; p.SetOrigin(cx, cy); p.Draw((VertexStore)glyphPlan.vxs); } p.SetOrigin(ox, oy); } //6. use this util to copy image from Agg actual image to System.Drawing.Bitmap PixelFarm.Agg.Imaging.BitmapHelper.CopyToGdiPlusBitmapSameSize(destImg, winBmp); //--------------- //7. just render our bitmap g.Clear(Color.White); g.DrawImage(winBmp, new Point(10, 0)); //-------------------------- }