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 D2D1Layer CreateLayer(D2D1SizeF size) { ID2D1Layer layer; GCHandle sizeHandle = GCHandle.Alloc(size, GCHandleType.Pinned); try { this.GetHandle<ID2D1RenderTarget>().CreateLayer(sizeHandle.AddrOfPinnedObject(), out layer); } finally { sizeHandle.Free(); } return new D2D1Layer(layer); }
public D2D1BitmapRenderTarget CreateCompatibleRenderTarget(D2D1SizeF desiredSize) { ID2D1BitmapRenderTarget bitmapRenderTarget; GCHandle desiredSizeHandle = GCHandle.Alloc(desiredSize, GCHandleType.Pinned); try { this.GetHandle<ID2D1RenderTarget>().CreateCompatibleRenderTarget( IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, D2D1CompatibleRenderTargetOptions.None, out bitmapRenderTarget); } finally { desiredSizeHandle.Free(); } return new D2D1BitmapRenderTarget(bitmapRenderTarget); }