Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / CommonUI / System / Drawing / GraphicsContext.cs / 1305376 / GraphicsContext.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Drawing { using System; using System.Drawing.Drawing2D; using System.Diagnostics; using System.Runtime.Versioning; ////// Contains information about the context of a Graphics object. /// internal class GraphicsContext : IDisposable { ////// The state that identifies the context. /// private int contextState; ////// The context's translate transform. /// private PointF transformOffset; ////// The context's clip region. /// private Region clipRegion; ////// The next context up the stack. /// private GraphicsContext nextContext; ////// The previous context down the stack. /// private GraphicsContext prevContext; ////// Flags that determines whether the context was created for a Graphics.Save() operation. /// This kind of contexts are cumulative across subsequent Save() calls so the top context /// info is cumulative. This is not the same for contexts created for a Graphics.BeginContainer() /// operation, in this case the new context information is reset. See Graphics.BeginContainer() /// and Graphics.Save() for more information. /// bool isCumulative; ////// Private constructor disallowed. /// private GraphicsContext() { } [ResourceExposure(ResourceScope.Process)] [ResourceConsumption(ResourceScope.Process)] public GraphicsContext(Graphics g) { Matrix transform = g.Transform; if (!transform.IsIdentity) { float[] elements = transform.Elements; this.transformOffset.X = elements[4]; this.transformOffset.Y = elements[5]; } transform.Dispose(); Region clip = g.Clip; if (clip.IsInfinite(g)) { clip.Dispose(); } else { this.clipRegion = clip; } } ////// Disposes this and all contexts up the stack. /// public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } ////// Disposes this and all contexts up the stack. /// public void Dispose(bool disposing) { if (this.nextContext != null) { // Dispose all contexts up the stack since they are relative to this one and its state will be invalid. this.nextContext.Dispose(); this.nextContext = null; } if (this.clipRegion != null) { this.clipRegion.Dispose(); this.clipRegion = null; } } ////// The state id representing the GraphicsContext. /// public int State { get { return this.contextState; } set { this.contextState = value; } } ////// The translate transform in the GraphicsContext. /// public PointF TransformOffset { get { return this.transformOffset; } } ////// The clipping region the GraphicsContext. /// public Region Clip { get { return this.clipRegion; } } ////// The next GraphicsContext object in the stack. /// public GraphicsContext Next { get { return this.nextContext; } set { this.nextContext = value; } } ////// The previous GraphicsContext object in the stack. /// public GraphicsContext Previous { get { return this.prevContext; } set { this.prevContext = value; } } ////// Determines whether this context is cumulative or not. See filed for more info. /// public bool IsCumulative { get { return this.isCumulative; } set { this.isCumulative = value; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SQLChars.cs
- QuaternionRotation3D.cs
- CalendarData.cs
- DiscoveryReferences.cs
- LocalTransaction.cs
- WebPartsPersonalizationAuthorization.cs
- DataTableMapping.cs
- UnsafePeerToPeerMethods.cs
- odbcmetadatafactory.cs
- SystemIPInterfaceProperties.cs
- RequestQueue.cs
- TextServicesContext.cs
- StrokeNodeData.cs
- XmlCodeExporter.cs
- Queue.cs
- MetabaseSettingsIis7.cs
- TypeElement.cs
- VisualBasicValue.cs
- TextLineResult.cs
- XdrBuilder.cs
- DropDownHolder.cs
- CaretElement.cs
- TreeBuilderBamlTranslator.cs
- MembershipValidatePasswordEventArgs.cs
- DeviceFiltersSection.cs
- DllNotFoundException.cs
- AttributedMetaModel.cs
- CorePropertiesFilter.cs
- DataGridAutoFormatDialog.cs
- SafeNativeMemoryHandle.cs
- Clock.cs
- MobileCategoryAttribute.cs
- followingsibling.cs
- TableItemProviderWrapper.cs
- BitmapEffect.cs
- OutOfProcStateClientManager.cs
- IdleTimeoutMonitor.cs
- TabRenderer.cs
- AuthenticatedStream.cs
- ImagingCache.cs
- DynamicUpdateCommand.cs
- SetterBase.cs
- SchemaContext.cs
- AutomationPropertyInfo.cs
- ConnectionStringSettings.cs
- RuntimeConfig.cs
- DataControlReferenceCollection.cs
- ObjectItemCollectionAssemblyCacheEntry.cs
- Package.cs
- HandleCollector.cs
- PropertyInfo.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- XamlParser.cs
- EntityContainer.cs
- SelectionBorderGlyph.cs
- CustomCredentialPolicy.cs
- InstalledVoice.cs
- SafeArchiveContext.cs
- CompositeDuplexBindingElement.cs
- InlineUIContainer.cs
- ViewCellRelation.cs
- GetWinFXPath.cs
- VarRefManager.cs
- UnmanagedMemoryStreamWrapper.cs
- SQLDateTimeStorage.cs
- Quad.cs
- SQLChars.cs
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- WebSysDescriptionAttribute.cs
- SerializationObjectManager.cs
- XomlCompiler.cs
- DiscoveryExceptionDictionary.cs
- SoapFault.cs
- SafeMarshalContext.cs
- UInt16.cs
- Typography.cs
- AppDomainAttributes.cs
- KerberosSecurityTokenAuthenticator.cs
- CodeTypeReferenceExpression.cs
- RecordsAffectedEventArgs.cs
- CriticalFinalizerObject.cs
- InfoCardService.cs
- OrderedParallelQuery.cs
- InvokeHandlers.cs
- COM2IDispatchConverter.cs
- baseshape.cs
- BuildProvidersCompiler.cs
- VisualStyleRenderer.cs
- wgx_exports.cs
- KnownTypeAttribute.cs
- XmlnsDefinitionAttribute.cs
- UriParserTemplates.cs
- AlternateView.cs
- Vector3DKeyFrameCollection.cs
- UIElementParagraph.cs
- OracleDataAdapter.cs
- DiagnosticTraceSource.cs
- SimpleBitVector32.cs
- Converter.cs
- CharEnumerator.cs