Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------------------------ //// 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
- DataBoundControlParameterTarget.cs
- DesignParameter.cs
- SqlCharStream.cs
- Viewport3DAutomationPeer.cs
- Aggregates.cs
- DynamicField.cs
- SequenceNumber.cs
- Token.cs
- VarInfo.cs
- LoadWorkflowByKeyAsyncResult.cs
- PropertyChangingEventArgs.cs
- UIElement.cs
- IndentTextWriter.cs
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- ItemCollection.cs
- SystemIcmpV6Statistics.cs
- InputScope.cs
- FormatConvertedBitmap.cs
- RenderingBiasValidation.cs
- ApplicationServiceManager.cs
- PolicyStatement.cs
- DoubleAnimation.cs
- TraceHandler.cs
- QuaternionKeyFrameCollection.cs
- DataGridViewCheckBoxCell.cs
- CodeCatchClause.cs
- WebControlAdapter.cs
- HttpApplication.cs
- MultiByteCodec.cs
- HTMLTextWriter.cs
- baseaxisquery.cs
- BitmapMetadataEnumerator.cs
- MessageProtectionOrder.cs
- ValidationEventArgs.cs
- Fonts.cs
- AddInAdapter.cs
- HiddenFieldPageStatePersister.cs
- DataGridViewControlCollection.cs
- DiagnosticTrace.cs
- ResourceManagerWrapper.cs
- ShaderRenderModeValidation.cs
- FormViewCommandEventArgs.cs
- _SslSessionsCache.cs
- XPathException.cs
- ISFTagAndGuidCache.cs
- RuntimeArgument.cs
- JsonFormatWriterGenerator.cs
- DataKeyArray.cs
- FixedDocumentSequencePaginator.cs
- QuaternionRotation3D.cs
- GenericArgumentsUpdater.cs
- ParallelEnumerableWrapper.cs
- ProcessHostConfigUtils.cs
- ConstraintCollection.cs
- ToolStripStatusLabel.cs
- ContentIterators.cs
- CompareValidator.cs
- ContainerControlDesigner.cs
- AsyncResult.cs
- SecurityCriticalDataForSet.cs
- ACL.cs
- CharacterString.cs
- AppDomainAttributes.cs
- NetMsmqBindingCollectionElement.cs
- ConfigXmlCDataSection.cs
- MetricEntry.cs
- WebPartTracker.cs
- KeyNotFoundException.cs
- ContainerFilterService.cs
- MaterialCollection.cs
- SafeProcessHandle.cs
- BookmarkEventArgs.cs
- DataGridTableStyleMappingNameEditor.cs
- TransactionProtocol.cs
- SqlExpressionNullability.cs
- CodeVariableReferenceExpression.cs
- PreviewControlDesigner.cs
- TreeNode.cs
- IssuanceLicense.cs
- HashCryptoHandle.cs
- RectAnimationClockResource.cs
- WebPartZone.cs
- GroupDescription.cs
- serverconfig.cs
- CodeMethodReturnStatement.cs
- Convert.cs
- ProviderCollection.cs
- CodeVariableDeclarationStatement.cs
- TreeNodeBinding.cs
- ACL.cs
- XmlQualifiedName.cs
- DataKeyArray.cs
- BamlStream.cs
- RegistrationServices.cs
- EntityCommandDefinition.cs
- Validator.cs
- SQLUtility.cs
- EdmSchemaError.cs
- EnterpriseServicesHelper.cs
- TextEffect.cs