public D2D1BitmapRenderTarget CreateCompatibleRenderTarget(D2D1SizeF desiredSize, D2D1SizeU desiredPixelSize, D2D1PixelFormat desiredFormat) { ID2D1BitmapRenderTarget bitmapRenderTarget; GCHandle desiredSizeHandle = GCHandle.Alloc(desiredSize, GCHandleType.Pinned); GCHandle desiredPixelSizeHandle = GCHandle.Alloc(desiredPixelSize, GCHandleType.Pinned); GCHandle desiredFormatHandle = GCHandle.Alloc(desiredFormat, GCHandleType.Pinned); try { this.GetHandle<ID2D1RenderTarget>().CreateCompatibleRenderTarget( desiredSizeHandle.AddrOfPinnedObject(), desiredPixelSizeHandle.AddrOfPinnedObject(), desiredFormatHandle.AddrOfPinnedObject(), D2D1CompatibleRenderTargetOptions.None, out bitmapRenderTarget); } finally { desiredSizeHandle.Free(); desiredPixelSizeHandle.Free(); desiredFormatHandle.Free(); } return new D2D1BitmapRenderTarget(bitmapRenderTarget); }
public D2D1BitmapRenderTarget CreateCompatibleRenderTarget(D2D1PixelFormat desiredFormat, D2D1CompatibleRenderTargetOptions options) { ID2D1BitmapRenderTarget bitmapRenderTarget; GCHandle desiredFormatHandle = GCHandle.Alloc(desiredFormat, GCHandleType.Pinned); try { this.GetHandle<ID2D1RenderTarget>().CreateCompatibleRenderTarget( IntPtr.Zero, IntPtr.Zero, desiredFormatHandle.AddrOfPinnedObject(), options, out bitmapRenderTarget); } finally { desiredFormatHandle.Free(); } return new D2D1BitmapRenderTarget(bitmapRenderTarget); }