public override void Load() { //----------------------------------------------- FormTestWinGLControl form = new FormTestWinGLControl(); CanvasGL2d canvas = new CanvasGL2d(this.Width, this.Height); var lionFill = new LionFillSprite(); //----------------------------------------------- form.SetGLPaintHandler((o, s) => { //canvas.Orientation = PixelFarm.Drawing.CanvasOrientation.LeftTop; canvas.Clear(PixelFarm.Drawing.Color.White); canvas.FillRect(PixelFarm.Drawing.Color.Blue, 0, 0, 400, 400); //draw vxs direct to GL surface //lionFill.Draw(canvas); //before offset canvas.EnableClipRect(); canvas.SetClipRectRel(200, 250, 100, 100); lionFill.Draw(canvas); //offset canvas.SetCanvasOrigin(50, 50); //test clipping canvas.SetClipRectRel(200, 250, 100, 100); lionFill.Draw(canvas); canvas.DisableClipRect(); canvas.SetCanvasOrigin(0, 0); }); form.Show(); }
public override void Load() { //----------------------------------------------- FormTestWinGLControl form = new FormTestWinGLControl(); CanvasGL2d canvas = new CanvasGL2d(this.Width, this.Height); var lionFill = new LionFillSprite(); //----------------------------------------------- GLBitmap bmp1 = null; int bmpW = 0; int bmpH = 0; form.SetGLPaintHandler((o, s) => { canvas.Clear(PixelFarm.Drawing.Color.White); //since OpenGL < 3 dose not have FrameBuffer //so we first draw it to backbuffer //then copy data from back buffer to texture if (bmp1 == null) { lionFill.Draw(canvas); GL.ReadBuffer(ReadBufferMode.Back); Bitmap bmp = new Bitmap(800, 600, System.Drawing.Imaging.PixelFormat.Format32bppRgb); byte[] buffer_output = new byte[800 * 4 * 600]; var bmpdata = bmp.LockBits( new Rectangle(0, 0, 800, 600), System.Drawing.Imaging.ImageLockMode.ReadWrite, bmp.PixelFormat); GL.ReadPixels(0, 0, 800, 600, PixelFormat.Bgra, PixelType.Byte, bmpdata.Scan0); unsafe { fixed(byte *outputH = &buffer_output[0]) { GL.ReadPixels(0, 0, 800, 600, PixelFormat.Bgra, PixelType.Byte, (IntPtr)outputH); } } bmp.UnlockBits(bmpdata); //save bmp.Save("d:\\WImageTest\\glLion.png"); //--------- //canvas.DrawImage(GLBitmapTexture.CreateBitmapTexture(bmp), 0, 0, bmp.Width, bmp.Height); bmp1 = PixelFarm.Drawing.DrawingGL.GLBitmapTextureHelper.CreateBitmapTexture(bmp); bmpW = bmp.Width; bmpH = bmp.Height; canvas.Clear(PixelFarm.Drawing.Color.White); } canvas.DrawImage(bmp1, 0, 0, bmpW, bmpH); //canvas.Clear(PixelFarm.Drawing.Color.White); }); form.Show(); }
public override void Load() { //lion fill test FormTestWinGLControl form = new FormTestWinGLControl(); CanvasGL2d canvas = new CanvasGL2d(this.Width, this.Height); var lionFill = new LionFillSprite(); //---------- //draw lion on software layer ActualImage actualImage = new ActualImage(800, 600, PixelFarm.Agg.Image.PixelFormat.Rgba32); Graphics2D g2d = Graphics2D.CreateFromImage(actualImage); GLBitmap bmp = null; form.SetGLPaintHandler((o, s) => { canvas.Clear(PixelFarm.Drawing.Color.White); //------------------------------------- // draw lion from bitmap to GL screen if (bmp == null) { lionFill.OnDraw(g2d); bmp = new GLBitmap(new LazyAggBitmapBufferProvider(actualImage)); } //lion is inverted from software layer , //so... we use DrawImageInvert() int xpos = 0; int w = bmp.Width; int h = bmp.Height; for (int i = 0; i < 3; ++i) { canvas.DrawImage(bmp, xpos, 50, w, h); w = (int)(w * 1.2); h = (int)(h * 1.2); xpos += 150; } w = bmp.Width; h = bmp.Height; xpos = 0; for (int i = 0; i < 2; ++i) { w = (int)(w * 0.75); h = (int)(h * 0.75); xpos -= 50; canvas.DrawImage(bmp, xpos, 50, w, h); } }); form.Show(); }
public override void Load() { //----------------------------------------------- FormTestWinGLControl form = new FormTestWinGLControl(); CanvasGL2d canvas = new CanvasGL2d(this.Width, this.Height); var lionFill = new LionFillSprite(); //----------------------------------------------- form.SetGLPaintHandler((o, s) => { canvas.Clear(PixelFarm.Drawing.Color.White); canvas.FillRect(PixelFarm.Drawing.Color.Blue, 0, 0, 400, 400); //draw vxs direct to GL surface lionFill.Draw(canvas); }); form.Show(); }
public override void Init() { lionFill = new LionFillSprite(); //lionFill.AutoFlipY = true; }