packages/Windows API Code Pack 1.1/source/Samples/DirectX/CS/Direct2D/D2DShapes/DrawingShape.cs
/// <summary>
/// Creates and returns a copy of the brush in the new render target.
/// Used for changing render targets.
/// A brush belongs to a render target, so when you want to draw with same brush in another render target
/// - you need to create a copy of the brush in the new render target.
/// </summary>
/// <param name="sourceBrush">The brush.</param>
/// <param name="newRenderTarget">The new render target.</param>
/// <returns></returns>
Creates and returns a copy of the brush in the new render target.
Used for changing render targets.
A brush belongs to a render target, so when you want to draw with same brush in another render target
you need to create a copy of the brush in the new render target.
Creates and returns a copy of the brush in the new render target . Used for changing render targets . A brush belongs to a render target so when you want to draw with same brush in another render target you need to create a copy of the brush in the new render target .
protected internal Brush CopyBrushToRenderTarget(Brush sourceBrush, RenderTarget newRenderTarget)
        {
            if (sourceBrush == null || newRenderTarget == null)
                return null;
            Brush newBrush;
            if (sourceBrush is SolidColorBrush)
            {
                newBrush = newRenderTarget.CreateSolidColorBrush(
                    ((SolidColorBrush)sourceBrush).Color,
                    new BrushProperties(sourceBrush.Opacity, sourceBrush.Transform));
                sourceBrush.Dispose();
                return newBrush;
            }
            if (sourceBrush is LinearGradientBrush)
            {
                var oldGSC = ((LinearGradientBrush)sourceBrush).GradientStops;
                var newGSC = newRenderTarget.CreateGradientStopCollection(oldGSC, oldGSC.ColorInterpolationGamma, oldGSC.ExtendMode);
                oldGSC.Dispose();
                newBrush = newRenderTarget.CreateLinearGradientBrush(
                    new LinearGradientBrushProperties(
                        ((LinearGradientBrush)sourceBrush).StartPoint,
                        ((LinearGradientBrush)sourceBrush).EndPoint),
                        newGSC,
                        new BrushProperties(sourceBrush.Opacity, sourceBrush.Transform));
                sourceBrush.Dispose();
                return newBrush;
            }
            if (sourceBrush is RadialGradientBrush)
            {
                var oldGSC = ((RadialGradientBrush)sourceBrush).GradientStops;
                var newGSC = newRenderTarget.CreateGradientStopCollection(oldGSC, oldGSC.ColorInterpolationGamma, oldGSC.ExtendMode);
                oldGSC.Dispose();
                newBrush = newRenderTarget.CreateRadialGradientBrush(
                    new RadialGradientBrushProperties(
                        ((RadialGradientBrush)sourceBrush).Center,
                        ((RadialGradientBrush)sourceBrush).GradientOriginOffset,
                        ((RadialGradientBrush)sourceBrush).RadiusX,
                        ((RadialGradientBrush)sourceBrush).RadiusY),
                        newGSC,
                        new BrushProperties(sourceBrush.Opacity, sourceBrush.Transform));
                sourceBrush.Dispose();
                return newBrush;
            }
            if (sourceBrush is BitmapBrush)
            {
                newBrush = newRenderTarget.CreateBitmapBrush(
                    Bitmap,
                    new BitmapBrushProperties(
                        ((BitmapBrush)sourceBrush).ExtendModeX,
                        ((BitmapBrush)sourceBrush).ExtendModeY,
                        ((BitmapBrush)sourceBrush).InterpolationMode),
                    new BrushProperties(sourceBrush.Opacity, sourceBrush.Transform));
                sourceBrush.Dispose();
                return newBrush;
            }
            throw new NotImplementedException("Unknown brush type used");
        }
protected internal Brush CopyBrushToRenderTarget ( Brush sourceBrush , RenderTarget newRenderTarget ) { if ( sourceBrush == null || newRenderTarget == null ) return null ; Brush newBrush ; if ( sourceBrush is SolidColorBrush ) { newBrush = newRenderTarget . CreateSolidColorBrush ( ( ( SolidColorBrush ) sourceBrush ) . Color , new BrushProperties ( sourceBrush . Opacity , sourceBrush . Transform ) ) ; sourceBrush . Dispose ( ) ; return newBrush ; } if ( sourceBrush is LinearGradientBrush ) { var oldGSC = ( ( LinearGradientBrush ) sourceBrush ) . GradientStops ; var newGSC = newRenderTarget . CreateGradientStopCollection ( oldGSC , oldGSC . ColorInterpolationGamma , oldGSC . ExtendMode ) ; oldGSC . Dispose ( ) ; newBrush = newRenderTarget . CreateLinearGradientBrush ( new LinearGradientBrushProperties ( ( ( LinearGradientBrush ) sourceBrush ) . StartPoint , ( ( LinearGradientBrush ) sourceBrush ) . EndPoint ) , newGSC , new BrushProperties ( sourceBrush . Opacity , sourceBrush . Transform ) ) ; sourceBrush . Dispose ( ) ; return newBrush ; } if ( sourceBrush is RadialGradientBrush ) { var oldGSC = ( ( RadialGradientBrush ) sourceBrush ) . GradientStops ; var newGSC = newRenderTarget . CreateGradientStopCollection ( oldGSC , oldGSC . ColorInterpolationGamma , oldGSC . ExtendMode ) ; oldGSC . Dispose ( ) ; newBrush = newRenderTarget . CreateRadialGradientBrush ( new RadialGradientBrushProperties ( ( ( RadialGradientBrush ) sourceBrush ) . Center , ( ( RadialGradientBrush ) sourceBrush ) . GradientOriginOffset , ( ( RadialGradientBrush ) sourceBrush ) . RadiusX , ( ( RadialGradientBrush ) sourceBrush ) . RadiusY ) , newGSC , new BrushProperties ( sourceBrush . Opacity , sourceBrush . Transform ) ) ; sourceBrush . Dispose ( ) ; return newBrush ; } if ( sourceBrush is BitmapBrush ) { newBrush = newRenderTarget . CreateBitmapBrush ( Bitmap , new BitmapBrushProperties ( ( ( BitmapBrush ) sourceBrush ) . ExtendModeX , ( ( BitmapBrush ) sourceBrush ) . ExtendModeY , ( ( BitmapBrush ) sourceBrush ) . InterpolationMode ) , new BrushProperties ( sourceBrush . Opacity , sourceBrush . Transform ) ) ; sourceBrush . Dispose ( ) ; return newBrush ; } throw new NotImplementedException ( " " ) ; }
Creates and returns a copy of the brush in the new render target.
Creates and returns a copy of the brush in the new render target .
None
sourceBrush
Brush
None
newRenderTarget
RenderTarget
The new render target.
The new render target .