Code:

/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / CommonUI / System / Drawing / Advanced / HatchBrush.cs / 1 / HatchBrush.cs

    //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Drawing.Drawing2D { 
    using System.Runtime.InteropServices; 
    using System.Diagnostics;
    using System; 
    using System.Drawing;
    using System.ComponentModel;
    using Microsoft.Win32;
    using System.Drawing.Internal; 

    /** 
     * Represent a HatchBrush brush object 
     */
    ///  
    /// 
    ///    Defines a rectangular brush with a hatch
    ///    style, a foreground color, and a background color.
    ///  
    public sealed class HatchBrush : Brush
    { 
        /** 
         * Create a new hatch brush object
         */ 
        /// 
        /// 
        ///    
        ///       Initializes a new instance of the  class with the specified  and foreground color. 
        ///    
        ///  
        public HatchBrush(HatchStyle hatchstyle, Color foreColor) : 
            this(hatchstyle, foreColor, Color.FromArgb( (int) unchecked( (int) 0xff000000) ) )
        { 
        }

        /// 
        ///  
        ///    
        ///       Initializes a new instance of the  class with the specified , 
        ///       foreground color, and background color. 
        ///    
        ///  
        public HatchBrush(HatchStyle hatchstyle, Color foreColor, Color backColor)
        {
            IntPtr brush = IntPtr.Zero;
            int status = SafeNativeMethods.Gdip.GdipCreateHatchBrush((int) hatchstyle, foreColor.ToArgb(), backColor.ToArgb(), out brush); 

            if (status != SafeNativeMethods.Gdip.Ok) 
                throw SafeNativeMethods.Gdip.StatusException(status); 

            SetNativeBrush(brush); 
        }

        /// 
        ///     Constructor to initialize this object from a GDI+ native reference. 
        /// 
        internal HatchBrush(IntPtr nativeBrush ) 
        { 
            Debug.Assert( nativeBrush != IntPtr.Zero, "Initializing native brush with null." );
            SetNativeBrush( nativeBrush ); 
        }

        /// 
        ///  
        ///    Creates an exact copy of this .
        ///  
        public override object Clone() 
        {
            IntPtr cloneBrush = IntPtr.Zero; 

            int status = SafeNativeMethods.Gdip.GdipCloneBrush(new HandleRef(this, this.NativeBrush), out cloneBrush);

            if (status != SafeNativeMethods.Gdip.Ok) 
                throw SafeNativeMethods.Gdip.StatusException(status);
 
            return new HatchBrush(cloneBrush); 
        }
 
        /**
         * Get hatch brush object attributes
         */
        ///  
        /// 
        ///    Gets the hatch style of this . 
        ///  
        public HatchStyle HatchStyle
        { 
            get {
                int hatchStyle = 0;

                int status = SafeNativeMethods.Gdip.GdipGetHatchStyle(new HandleRef(this, this.NativeBrush), out hatchStyle); 

                if (status != SafeNativeMethods.Gdip.Ok) 
                    throw SafeNativeMethods.Gdip.StatusException(status); 

                return (HatchStyle) hatchStyle; 
            }
        }

        ///  
        /// 
        ///    Gets the color of hatch lines drawn by this 
        /// . 
        /// 
        public Color ForegroundColor 
        {
            get {
                int forecol;
 
                int status = SafeNativeMethods.Gdip.GdipGetHatchForegroundColor(new HandleRef(this, this.NativeBrush), out forecol);
 
                if (status != SafeNativeMethods.Gdip.Ok) 
                    throw SafeNativeMethods.Gdip.StatusException(status);
 
                return Color.FromArgb(forecol);
            }
        }
 
        /// 
        ///  
        ///     
        ///       Gets the color of spaces between the hatch
        ///       lines drawn by this . 
        ///    
        /// 
        public Color BackgroundColor
        { 
            get {
                int backcol; 
 
                int status = SafeNativeMethods.Gdip.GdipGetHatchBackgroundColor(new HandleRef(this, this.NativeBrush), out backcol);
 
                if (status != SafeNativeMethods.Gdip.Ok)
                    throw SafeNativeMethods.Gdip.StatusException(status);

                return Color.FromArgb(backcol); 
            }
        } 
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Drawing.Drawing2D { 
    using System.Runtime.InteropServices; 
    using System.Diagnostics;
    using System; 
    using System.Drawing;
    using System.ComponentModel;
    using Microsoft.Win32;
    using System.Drawing.Internal; 

    /** 
     * Represent a HatchBrush brush object 
     */
    ///  
    /// 
    ///    Defines a rectangular brush with a hatch
    ///    style, a foreground color, and a background color.
    ///  
    public sealed class HatchBrush : Brush
    { 
        /** 
         * Create a new hatch brush object
         */ 
        /// 
        /// 
        ///    
        ///       Initializes a new instance of the  class with the specified  and foreground color. 
        ///    
        ///  
        public HatchBrush(HatchStyle hatchstyle, Color foreColor) : 
            this(hatchstyle, foreColor, Color.FromArgb( (int) unchecked( (int) 0xff000000) ) )
        { 
        }

        /// 
        ///  
        ///    
        ///       Initializes a new instance of the  class with the specified , 
        ///       foreground color, and background color. 
        ///    
        ///  
        public HatchBrush(HatchStyle hatchstyle, Color foreColor, Color backColor)
        {
            IntPtr brush = IntPtr.Zero;
            int status = SafeNativeMethods.Gdip.GdipCreateHatchBrush((int) hatchstyle, foreColor.ToArgb(), backColor.ToArgb(), out brush); 

            if (status != SafeNativeMethods.Gdip.Ok) 
                throw SafeNativeMethods.Gdip.StatusException(status); 

            SetNativeBrush(brush); 
        }

        /// 
        ///     Constructor to initialize this object from a GDI+ native reference. 
        /// 
        internal HatchBrush(IntPtr nativeBrush ) 
        { 
            Debug.Assert( nativeBrush != IntPtr.Zero, "Initializing native brush with null." );
            SetNativeBrush( nativeBrush ); 
        }

        /// 
        ///  
        ///    Creates an exact copy of this .
        ///  
        public override object Clone() 
        {
            IntPtr cloneBrush = IntPtr.Zero; 

            int status = SafeNativeMethods.Gdip.GdipCloneBrush(new HandleRef(this, this.NativeBrush), out cloneBrush);

            if (status != SafeNativeMethods.Gdip.Ok) 
                throw SafeNativeMethods.Gdip.StatusException(status);
 
            return new HatchBrush(cloneBrush); 
        }
 
        /**
         * Get hatch brush object attributes
         */
        ///  
        /// 
        ///    Gets the hatch style of this . 
        ///  
        public HatchStyle HatchStyle
        { 
            get {
                int hatchStyle = 0;

                int status = SafeNativeMethods.Gdip.GdipGetHatchStyle(new HandleRef(this, this.NativeBrush), out hatchStyle); 

                if (status != SafeNativeMethods.Gdip.Ok) 
                    throw SafeNativeMethods.Gdip.StatusException(status); 

                return (HatchStyle) hatchStyle; 
            }
        }

        ///  
        /// 
        ///    Gets the color of hatch lines drawn by this 
        /// . 
        /// 
        public Color ForegroundColor 
        {
            get {
                int forecol;
 
                int status = SafeNativeMethods.Gdip.GdipGetHatchForegroundColor(new HandleRef(this, this.NativeBrush), out forecol);
 
                if (status != SafeNativeMethods.Gdip.Ok) 
                    throw SafeNativeMethods.Gdip.StatusException(status);
 
                return Color.FromArgb(forecol);
            }
        }
 
        /// 
        ///  
        ///     
        ///       Gets the color of spaces between the hatch
        ///       lines drawn by this . 
        ///    
        /// 
        public Color BackgroundColor
        { 
            get {
                int backcol; 
 
                int status = SafeNativeMethods.Gdip.GdipGetHatchBackgroundColor(new HandleRef(this, this.NativeBrush), out backcol);
 
                if (status != SafeNativeMethods.Gdip.Ok)
                    throw SafeNativeMethods.Gdip.StatusException(status);

                return Color.FromArgb(backcol); 
            }
        } 
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.