protected override void OnGLRender(object sender, EventArgs args) { _pcx.SmoothMode = SmoothMode.Smooth; _pcx.StrokeColor = PixelFarm.Drawing.Color.Blue; _pcx.ClearColorBuffer(); if (!_resInit) { _msdf_bmp = DemoHelper.LoadTexture(_fontAtlas.MainBitmap); _resInit = true; } _painter.Clear(PixelFarm.Drawing.Color.White); _fontAtlas.TryGetItem(_glyphIndex_0, out AtlasItem glyphData); PixelFarm.Drawing.Rectangle r = new PixelFarm.Drawing.Rectangle(glyphData.Left, glyphData.Top, glyphData.Width, glyphData.Height); _pcx.DrawSubImageWithMsdf(_msdf_bmp, ref r, 100, 40); _fontAtlas.TryGetItem(_glyphIndex_1, out glyphData); PixelFarm.Drawing.Rectangle r2 = new PixelFarm.Drawing.Rectangle(glyphData.Left, glyphData.Top, glyphData.Width, glyphData.Height); _pcx.DrawSubImageWithMsdf(_msdf_bmp, ref r2, 100 + r.Width, 40); //full image _pcx.DrawImage(_msdf_bmp, 0, 100); SwapBuffers(); }
public void RenderFrame() { _painter.Clear(Color.White); _painter.FillColor = Color.Yellow; //for (int i = 0; i < 10; ++i) //{ // _painter.FillRect(100 + i * 120, 200 + i * 120, 100, 100); //} _painter.FontFillColor = Color.Black; _painter.FillRect(100, 250, 20, 20); _painter.DrawString("Hello!", 100, 250); _painter.DrawString("...from Typography", 100, 300); }
protected override void OnGLRender(object sender, EventArgs args) { _pcx.SmoothMode = SmoothMode.Smooth; _pcx.StrokeColor = PixelFarm.Drawing.Color.Blue; _pcx.ClearColorBuffer(); _painter.FillColor = PixelFarm.Drawing.Color.Black; _painter.Clear(Color.Blue); PixelFarm.Drawing.RectangleF maskSrc = new RectangleF(0, 0, _maskBmp.Width, _maskBmp.Height); _pcx.DrawImageWithMask(_maskGLBmp, _colorGLBmp, maskSrc, 5, 3, 0, 0); _pcx.DrawImageWithMask(_maskGLBmp, _colorGLBmp, maskSrc, 5, 3, 30, 30); SwapBuffers(); }
protected override void OnGLRender(object sender, EventArgs args) { _pcx.SmoothMode = SmoothMode.Smooth; _pcx.StrokeColor = PixelFarm.Drawing.Color.Blue; _pcx.ClearColorBuffer(); if (!_resInit) { // msdf_bmp = LoadTexture(@"..\msdf_75.png"); //msdf_bmp = LoadTexture(@"d:\\WImageTest\\a001_x1_66.png"); _msdf_bmp = DemoHelper.LoadTexture(_totalBmp); //msdf_bmp = LoadTexture(@"d:\\WImageTest\\a001_x1.png"); //msdf_bmp = LoadTexture(@"d:\\WImageTest\\msdf_65.png"); _resInit = true; } _painter.Clear(PixelFarm.Drawing.Color.White); //var f = painter.CurrentFont; //painter.DrawString("hello!", 0, 20); //canvas2d.DrawImageWithSubPixelRenderingMsdf(msdf_bmp, 200, 500, 15f); Typography.Rendering.TextureGlyphMapData glyphData; byte[] codepoint = System.Text.Encoding.UTF8.GetBytes("AB"); _fontAtlas.TryGetGlyphMapData(codepoint[0], out glyphData); PixelFarm.Drawing.Rectangle r = new PixelFarm.Drawing.Rectangle(glyphData.Left, glyphData.Top, glyphData.Width, glyphData.Height); //canvas2d.DrawSubImageWithMsdf(msdf_bmp, ref r, 100, 500); _pcx.DrawSubImageWithMsdf(_msdf_bmp, ref r, 100, 500); _fontAtlas.TryGetGlyphMapData(codepoint[1], out glyphData); PixelFarm.Drawing.Rectangle r2 = new PixelFarm.Drawing.Rectangle(glyphData.Left, glyphData.Top, glyphData.Width, glyphData.Height); _pcx.DrawSubImageWithMsdf(_msdf_bmp, ref r2, 100 + r.Width - 10, 500); //full image _pcx.DrawImage(_msdf_bmp, 100, 300); SwapBuffers(); }
protected override void OnGLRender(object sender, EventArgs args) { //reset _pcx.SmoothMode = SmoothMode.Smooth; _pcx.ClearColorBuffer(); _painter.Clear(Color.Yellow); switch (DrawSet) { case T408_DrawSet.A: { //draw msdf bitmap to mask surface if (_maskRenderSurface == null) { GLRenderSurface currentSurface = _pcx.CurrentRenderSurface; _maskRenderSurface = new GLRenderSurface(100, 100); _pcx.AttachToRenderSurface(_maskRenderSurface); //draw mask _pcx.Clear(Color.Black); _pcx.DrawImageWithMsdf(_msdfMaskGLBmp, 0, 0, 5, Color.White); //switch back to normal surface _pcx.AttachToRenderSurface(currentSurface); } //render with simple mask _pcx.DrawImageWithMask( _maskRenderSurface.GetInnerGLData().GLBmp, _colorGLBmp, 0, 0); } break; case T408_DrawSet.B: { RectangleF maskSrc = new RectangleF(0, 0, _msdfMaskBmp.Width, _msdfMaskBmp.Height); Rectangle rect = new Rectangle(10, 10, 120, 120); Quad2f quad = new Quad2f(); quad.SetCornersFromRect(rect); AffineMat mat1 = AffineMat.Iden(); mat1.Translate(-rect.Width / 2, -rect.Height / 2); mat1.RotateDeg(45); mat1.Translate(rect.Width / 2, rect.Height / 2); quad.Transform(mat1); //***test transform //----------------------- //create mask surface, this quite low leve step. //user should use this through drawboard //----------------------- if (_maskRenderSurface2 == null) { //before we switch to another GLRenderSurface. //we save current setting of current GLRenderSurface _pcx.SaveStates(out GLPainterStatesData saveData1); _maskRenderSurface2 = new GLRenderSurface(100, 100); _pcx.AttachToRenderSurface(_maskRenderSurface2); _pcx.OriginKind = PixelFarm.Drawing.RenderSurfaceOriginKind.LeftTop; //draw mask _pcx.Clear(Color.Black); //draw image to specific quad _pcx.DrawImageWithMsdf(_msdfMaskGLBmp, quad, Color.White); //switch back to normal surface _pcx.RestoreStates(saveData1); } _pcx.DrawImageWithMask( _maskRenderSurface2.GetInnerGLData().GLBmp, _colorGLBmp, 20, 20); } break; } SwapBuffers(); }