// // System.Drawing.SolidBrush.cs // // Author: // Dennis Hayes (dennish@Raytek.com) // Alexandre Pigolkine(pigolkine@gmx.de) // Ravindra (rkumar@novell.com) // // (C) 2002 Ximian, Inc. // (C) 2004 Novell, Inc. // using System; namespace System.Drawing { public sealed class SolidBrush : Brush { internal bool isModifiable = true; private Color color; internal SolidBrush (IntPtr ptr) : base (ptr) { int val; Status status = GDIPlus.GdipGetSolidFillColor (ptr, out val); GDIPlus.CheckStatus (status); color = Color.FromArgb (val); } public SolidBrush (Color color) { this.color = color; int brush; Status status = GDIPlus.GdipCreateSolidFill (color.ToArgb (), out brush); GDIPlus.CheckStatus (status); nativeObject = (IntPtr) brush; } public Color Color { get { return color; } set { if (isModifiable) { color = value; Status status = GDIPlus.GdipSetSolidFillColor (nativeObject, value.ToArgb ()); GDIPlus.CheckStatus (status); } else throw new ArgumentException ("This SolidBrush object can't be modified."); } } public override object Clone() { IntPtr clonePtr; Status status = GDIPlus.GdipCloneBrush (nativeObject, out clonePtr); GDIPlus.CheckStatus (status); SolidBrush clone = new SolidBrush (clonePtr); return clone; } protected override void Dispose (bool disposing) { // Let the GC collect it if (isModifiable || disposing == false) { Status status = GDIPlus.GdipDeleteBrush (nativeObject); GDIPlus.CheckStatus (status); } else throw new ArgumentException ("This SolidBrush object can't be modified."); } } }