public ImageGraphics2D(ActualImage destImage) { //create from actual image this.destImage = destImage; this.destActualImage = destImage; this.destImageReaderWriter = new MyImageReaderWriter(); destImageReaderWriter.ReloadImage(destImage); this.sclineRas = new ScanlineRasterizer(); this.sclineRasToBmp = new ScanlineRasToDestBitmapRenderer(); this.destWidth = destImage.Width; this.destHeight = destImage.Height; this.clipBox = new RectInt(0, 0, destImage.Width, destImage.Height); this.sclineRas.SetClipBox(this.clipBox); this.sclinePack8 = new ScanlinePacked8(); this.currentBlender = this.pixBlenderRGBA32 = new PixelBlenderBGRA(); }
public void ReloadImage(ActualImage actualImage) { if (this.actualImage == actualImage) { return; } this.actualImage = actualImage; //calculate image stride switch (actualImage.PixelFormat) { case PixelFormat.ARGB32: { Attach(actualImage.Width, actualImage.Height, actualImage.BitDepth, ActualImage.GetBuffer(actualImage), pixelBlenderRGBA ?? (pixelBlenderRGBA = new PixelBlenderBGRA())); } break; case PixelFormat.GrayScale8: { Attach(actualImage.Width, actualImage.Height, actualImage.BitDepth, ActualImage.GetBuffer(actualImage), pixelBlenderGray ?? (pixelBlenderGray = new PixelBlenderGray(1))); } break; case PixelFormat.RGB24: default: { throw new NotSupportedException(); } } }