상속: PixelBlenderBGRABase, IPixelBlender
예제 #1
0
        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();
                    }
            }
        }