示例#1
0
 public WicBitmapImpl(ImagingFactory factory, Platform.PixelFormat format, IntPtr data, int width, int height, int stride)
 {
     WicImpl     = new Bitmap(factory, width, height, format.ToWic(), BitmapCreateCacheOption.CacheOnDemand);
     PixelFormat = format;
     using (var l = WicImpl.Lock(BitmapLockFlags.Write))
     {
         for (var row = 0; row < height; row++)
         {
             UnmanagedMethods.CopyMemory(new IntPtr(l.Data.DataPointer.ToInt64() + row * l.Stride),
                                         new IntPtr(data.ToInt64() + row * stride), (uint)l.Data.Pitch);
         }
     }
 }
        public WicBitmapImpl(APixelFormat format, IntPtr data, PixelSize size, Vector dpi, int stride)
        {
            WicImpl = new Bitmap(Direct2D1Platform.ImagingFactory, size.Width, size.Height, format.ToWic(), BitmapCreateCacheOption.CacheOnDemand);
            WicImpl.SetResolution(dpi.X, dpi.Y);

            PixelFormat = format;
            using (var l = WicImpl.Lock(BitmapLockFlags.Write))
            {
                for (var row = 0; row < size.Height; row++)
                {
                    UnmanagedMethods.CopyMemory(
                        (l.Data.DataPointer + row * l.Stride),
                        (data + row * stride),
                        (UIntPtr)l.Data.Pitch);
                }
            }
        }
示例#3
0
 public override IDrawingContextImpl CreateDrawingContext(IVisualBrushRenderer visualBrushRenderer)
 {
     return(base.CreateDrawingContext(visualBrushRenderer, () =>
     {
         using (var l = WicImpl.Lock(BitmapLockFlags.Read))
         {
             for (var y = 0; y < _target.Height; y++)
             {
                 UnmanagedMethods.CopyMemory(
                     _target.Address + _target.RowBytes * y,
                     l.Data.DataPointer + l.Stride * y,
                     (uint)Math.Min(l.Stride, _target.RowBytes));
             }
         }
         Dispose();
         _target.Dispose();
     }));
 }