public WriteableBitmap(IntPtr intPtr, int width, int height, PixelFormat pixelFormat)
        {
            Width         = width;
            Height        = height;
            PixelFormat   = pixelFormat;
            Stride        = CalculateStride(pixelFormat, width);
            Offset        = 0;
            BytesPerPixel = ((pixelFormat.BitsPerPixel + 7) / 8);
            Length        = width * height * BytesPerPixel;

            _memoryMapSection = intPtr;

            _mapView            = Win32Interop.MapViewOfFile(_memoryMapSection, 0xF001F, 0, 0, (UInt32)Length);
            _mustDisposeMapView = true;

            BitmapSource = (InteropBitmap)Imaging.CreateBitmapSourceFromMemorySection(_mapView, width, height, pixelFormat, Stride, Offset);
        }
        public WriteableBitmap(int width, int height, PixelFormat pixelFormat)
        {
            Width         = width;
            Height        = height;
            PixelFormat   = pixelFormat;
            Stride        = CalculateStride(pixelFormat, width);
            Offset        = 0;
            BytesPerPixel = ((pixelFormat.BitsPerPixel + 7) / 8);
            Length        = width * height * BytesPerPixel;

            //IntPtr = Marshal.AllocHGlobal(Length);
            //this.MemoryMappedFile = MemoryMappedFile.CreateNew(null, Length, MemoryMappedFileAccess.ReadWrite);
            //IntPtr = this.MemoryMappedFile.CreateViewAccessor().SafeMemoryMappedViewHandle.DangerousGetHandle();

            _memoryMapSection            = Win32Interop.CreateFileMapping(new IntPtr(-1), IntPtr.Zero, 0x04, 0, (UInt32)Length, null);
            _mustDisposeMemoryMapSection = true;
            _mapView            = Win32Interop.MapViewOfFile(_memoryMapSection, 0xF001F, 0, 0, (UInt32)Length);
            _mustDisposeMapView = true;

            BitmapSource = (InteropBitmap)Imaging.CreateBitmapSourceFromMemorySection(_memoryMapSection, width, height, pixelFormat, Stride, Offset);
        }