Ejemplo n.º 1
0
        public static void WriteAsSpanBitmap(GDIBITMAP bmp, SpanBitmap.Action1 action)
        {
            var rect = new Rectangle(0, 0, bmp.Width, bmp.Height);

            GDIPTR dstBits = null;

            try
            {
                dstBits = bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, bmp.PixelFormat);

                action(dstBits.AsSpanBitmapDangerous());
            }
            finally
            {
                if (dstBits != null)
                {
                    bmp.UnlockBits(dstBits);
                }
            }
        }
Ejemplo n.º 2
0
        public static MemoryBitmap CloneAsMemoryBitmap(GDIBITMAP bmp, INTEROPFMT?fmtOverride = null)
        {
            var rect = new Rectangle(0, 0, bmp.Width, bmp.Height);

            GDIPTR bits = null;

            try
            {
                bits = bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly, bmp.PixelFormat);

                var span = bits.AsSpanBitmapDangerous();

                return(fmtOverride.HasValue ? span.ToMemoryBitmap(fmtOverride.Value) : span.ToMemoryBitmap());
            }
            finally
            {
                if (bits != null)
                {
                    bmp.UnlockBits(bits);
                }
            }
        }