Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / CommonUI / System / Drawing / SolidBrush.cs / 1 / SolidBrush.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /*************************************************************************\ * * Copyright (c) 1998-1999, Microsoft Corp. All Rights Reserved. * * Module Name: * * SolidBrush.cs * * Abstract: * * COM+ wrapper for GDI+ SolidBrush objects * * Revision History: * * 12/15/1998 [....] * Created it. * \**************************************************************************/ namespace System.Drawing { using System.Runtime.InteropServices; using System.Diagnostics; using System; using Microsoft.Win32; using System.ComponentModel; using System.Drawing.Internal; ////// /// public sealed class SolidBrush : Brush, ISystemColorTracker { // GDI+ doesn't understand system colors, so we need to cache the value here private Color color = Color.Empty; private bool immutable; /** * Create a new solid fill brush object */ ////// Defines a brush made up of a single color. Brushes are /// used to fill graphics shapes such as rectangles, ellipses, pies, polygons, and paths. /// ////// /// public SolidBrush(Color color) { this.color = color; IntPtr brush = IntPtr.Zero; int status = SafeNativeMethods.Gdip.GdipCreateSolidFill(this.color.ToArgb(), out brush); if (status != SafeNativeMethods.Gdip.Ok) throw SafeNativeMethods.Gdip.StatusException(status); SetNativeBrush(brush); if (color.IsSystemColor) SystemColorTracker.Add(this); } internal SolidBrush(Color color, bool immutable) : this(color) { this.immutable = immutable; } ////// Initializes a new instance of the ///class of the specified /// color. /// /// Constructor to initialized this object from a GDI+ Brush native pointer. /// internal SolidBrush( 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); // We intentionally lose the "immutable" bit. return new SolidBrush(cloneBrush); } ///. /// protected override void Dispose(bool disposing) { if (!disposing) { immutable = false; } else if (immutable) { throw new ArgumentException(SR.GetString(SR.CantChangeImmutableObjects, "Brush")); } base.Dispose(disposing); } /// /// /// public Color Color { get { if (this.color == Color.Empty) { int colorARGB = 0; int status = SafeNativeMethods.Gdip.GdipGetSolidFillColor(new HandleRef(this, this.NativeBrush), out colorARGB); if (status != SafeNativeMethods.Gdip.Ok) throw SafeNativeMethods.Gdip.StatusException(status); this.color = Color.FromArgb(colorARGB); } // GDI+ doesn't understand system colors, so we can't use GdipGetSolidFillColor in the general case return this.color; } set { if (immutable) { throw new ArgumentException(SR.GetString(SR.CantChangeImmutableObjects, "Brush")); } if( this.color != value ) { Color oldColor = this.color; InternalSetColor(value); // if (value.IsSystemColor && !oldColor.IsSystemColor) { SystemColorTracker.Add(this); } } } } // Sets the color even if the brush is considered immutable private void InternalSetColor(Color value) { int status = SafeNativeMethods.Gdip.GdipSetSolidFillColor(new HandleRef(this, this.NativeBrush), value.ToArgb()); if (status != SafeNativeMethods.Gdip.Ok) throw SafeNativeMethods.Gdip.StatusException(status); this.color = value; } ////// The color of this ///. /// /// void ISystemColorTracker.OnSystemColorChanged() { if( this.NativeBrush != IntPtr.Zero ){ InternalSetColor(color); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WebPartConnectionsEventArgs.cs
- EditingCommands.cs
- WsiProfilesElementCollection.cs
- GroupBoxAutomationPeer.cs
- BasicExpressionVisitor.cs
- DES.cs
- MsdtcClusterUtils.cs
- DurableTimerExtension.cs
- SystemTcpConnection.cs
- ServicePointManager.cs
- CodeGotoStatement.cs
- FormatConvertedBitmap.cs
- MetadataSource.cs
- ToolStripItemTextRenderEventArgs.cs
- AccessedThroughPropertyAttribute.cs
- BasicViewGenerator.cs
- DecoderFallback.cs
- ConstraintConverter.cs
- HelpHtmlBuilder.cs
- EventLog.cs
- ReceiveContext.cs
- ExtendedProtectionPolicyElement.cs
- CompilationLock.cs
- WinEventWrap.cs
- CustomBinding.cs
- HtmlContainerControl.cs
- SearchForVirtualItemEventArgs.cs
- ProvidersHelper.cs
- XmlBinaryReader.cs
- VirtualPathProvider.cs
- RuleProcessor.cs
- TypePropertyEditor.cs
- GenericXmlSecurityTokenAuthenticator.cs
- TriggerCollection.cs
- ImageInfo.cs
- ContentTypeSettingClientMessageFormatter.cs
- AlignmentYValidation.cs
- _RequestCacheProtocol.cs
- HMACMD5.cs
- TemplateParser.cs
- UnmanagedMarshal.cs
- xamlnodes.cs
- Column.cs
- TransformerInfo.cs
- UTF7Encoding.cs
- BufferBuilder.cs
- Compilation.cs
- CharacterHit.cs
- Evidence.cs
- DropShadowBitmapEffect.cs
- BindingOperations.cs
- DataServiceConfiguration.cs
- FlowDocumentFormatter.cs
- OutputCacheProfileCollection.cs
- GlyphElement.cs
- CategoryGridEntry.cs
- RuleSetDialog.Designer.cs
- PropertyGridEditorPart.cs
- BitmapEffectDrawing.cs
- FileLogRecordHeader.cs
- CompiledQuery.cs
- WebScriptClientGenerator.cs
- NodeFunctions.cs
- ToolStripItemTextRenderEventArgs.cs
- SynchronizationValidator.cs
- DotNetATv1WindowsLogEntryDeserializer.cs
- ObjectMemberMapping.cs
- ProtocolsSection.cs
- HtmlTableRow.cs
- FieldBuilder.cs
- ConfigurationCollectionAttribute.cs
- PenThreadPool.cs
- Calendar.cs
- NamespaceTable.cs
- ForceCopyBuildProvider.cs
- CompositeFontFamily.cs
- TypeUtils.cs
- StructuredTypeEmitter.cs
- XmlException.cs
- PreDigestedSignedInfo.cs
- XmlNamespaceManager.cs
- ExpressionValueEditor.cs
- ThreadPool.cs
- PrivateFontCollection.cs
- AddInSegmentDirectoryNotFoundException.cs
- ValidationSummary.cs
- NavigatingCancelEventArgs.cs
- HintTextConverter.cs
- UriSchemeKeyedCollection.cs
- FileLogRecordEnumerator.cs
- SafeBitVector32.cs
- MediaPlayerState.cs
- ListItemViewAttribute.cs
- ZipPackage.cs
- CachedBitmap.cs
- XmlAtomicValue.cs
- SessionSwitchEventArgs.cs
- ErrorRuntimeConfig.cs
- OdbcEnvironment.cs
- PersistChildrenAttribute.cs