Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / CommonUI / System / Drawing / GraphicsContext.cs / 1 / GraphicsContext.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Drawing {
using System;
using System.Drawing.Drawing2D;
using System.Diagnostics;
///
/// 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() {
}
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
- Timer.cs
- ProxyWebPartManager.cs
- ReachDocumentSequenceSerializer.cs
- BinaryConverter.cs
- TabletDevice.cs
- TraceSection.cs
- Rectangle.cs
- TextPenaltyModule.cs
- FixedFindEngine.cs
- InfoCardClaim.cs
- NotifyParentPropertyAttribute.cs
- ParameterReplacerVisitor.cs
- IpcChannelHelper.cs
- FloatUtil.cs
- TextSimpleMarkerProperties.cs
- OleDbMetaDataFactory.cs
- TextServicesCompartment.cs
- TraceProvider.cs
- NegatedCellConstant.cs
- RMEnrollmentPage3.cs
- SecurityNegotiationException.cs
- DurableErrorHandler.cs
- Models.cs
- IpcChannelHelper.cs
- WorkflowServiceOperationListItem.cs
- Completion.cs
- MediaScriptCommandRoutedEventArgs.cs
- Sql8ExpressionRewriter.cs
- SpellCheck.cs
- DataMemberConverter.cs
- WebBrowserContainer.cs
- BufferedGraphicsContext.cs
- XmlChildNodes.cs
- OutputCacheSettings.cs
- CheckBoxFlatAdapter.cs
- PackageDigitalSignature.cs
- ReliableMessagingVersion.cs
- GridViewRowPresenterBase.cs
- CDSCollectionETWBCLProvider.cs
- DataGridViewCellCollection.cs
- Scripts.cs
- ScrollData.cs
- RectKeyFrameCollection.cs
- Int64Storage.cs
- UnsafeNetInfoNativeMethods.cs
- Error.cs
- RuntimeHelpers.cs
- GridViewSortEventArgs.cs
- ScopedKnownTypes.cs
- PixelFormats.cs
- CLRBindingWorker.cs
- ExtensibleClassFactory.cs
- EditableRegion.cs
- InternalBase.cs
- TraceInternal.cs
- Types.cs
- ValuePattern.cs
- RectangleF.cs
- QilTypeChecker.cs
- StyleCollection.cs
- ButtonBase.cs
- WebPartCollection.cs
- TemplateControlCodeDomTreeGenerator.cs
- XmlDigitalSignatureProcessor.cs
- EntityCommandCompilationException.cs
- XD.cs
- CommonDialog.cs
- Command.cs
- OracleTimeSpan.cs
- OleDbParameterCollection.cs
- IChannel.cs
- Operator.cs
- RouteParametersHelper.cs
- VisualBrush.cs
- GraphicsContext.cs
- TextEndOfSegment.cs
- Label.cs
- XPathEmptyIterator.cs
- RectAnimationBase.cs
- FieldBuilder.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- PermissionSet.cs
- ZoneButton.cs
- WindowsFormsSynchronizationContext.cs
- UrlParameterWriter.cs
- BlockCollection.cs
- SqlCacheDependency.cs
- UpdateEventArgs.cs
- BitStream.cs
- DataFormat.cs
- HierarchicalDataBoundControl.cs
- OleDbCommand.cs
- BridgeDataRecord.cs
- MachineKeyConverter.cs
- Validator.cs
- Predicate.cs
- ByteFacetDescriptionElement.cs
- ZoneMembershipCondition.cs
- ProcessModelInfo.cs
- SQLString.cs