public D2D1RadialGradientBrush CreateRadialGradientBrush(D2D1RadialGradientBrushProperties radialGradientBrushProperties, D2D1BrushProperties brushProperties, D2D1GradientStopCollection gradientStopCollection)
        {
            if (gradientStopCollection == null)
            {
                throw new ArgumentOutOfRangeException("gradientStopCollection");
            }

            ID2D1RadialGradientBrush radialGradientBrush;

            GCHandle brushPropertiesHandle = GCHandle.Alloc(brushProperties, GCHandleType.Pinned);

            try
            {
                this.GetHandle<ID2D1RenderTarget>().CreateRadialGradientBrush(ref radialGradientBrushProperties, brushPropertiesHandle.AddrOfPinnedObject(), gradientStopCollection.GetHandle<ID2D1GradientStopCollection>(), out radialGradientBrush);
            }
            finally
            {
                brushPropertiesHandle.Free();
            }

            return new D2D1RadialGradientBrush(radialGradientBrush);
        }
        public D2D1RadialGradientBrush CreateRadialGradientBrush(D2D1RadialGradientBrushProperties radialGradientBrushProperties, D2D1GradientStopCollection gradientStopCollection)
        {
            if (gradientStopCollection == null)
            {
                throw new ArgumentOutOfRangeException("gradientStopCollection");
            }

            ID2D1RadialGradientBrush radialGradientBrush;
            this.GetHandle<ID2D1RenderTarget>().CreateRadialGradientBrush(ref radialGradientBrushProperties, IntPtr.Zero, gradientStopCollection.GetHandle<ID2D1GradientStopCollection>(), out radialGradientBrush);
            return new D2D1RadialGradientBrush(radialGradientBrush);
        }