Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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.
//------------------------------------------------------------------------------
//
// 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
- WebPartMovingEventArgs.cs
- LogicalExpr.cs
- EntityParameter.cs
- WindowsSysHeader.cs
- SQLDecimal.cs
- View.cs
- _BufferOffsetSize.cs
- PropVariant.cs
- TextDpi.cs
- XmlNotation.cs
- SystemIPGlobalStatistics.cs
- HTTPRemotingHandler.cs
- InputEventArgs.cs
- SourceFileInfo.cs
- KeyValueSerializer.cs
- CryptoApi.cs
- CodeEntryPointMethod.cs
- SQLCharsStorage.cs
- Oci.cs
- XmlCollation.cs
- AsynchronousChannelMergeEnumerator.cs
- OleStrCAMarshaler.cs
- ZipIOLocalFileHeader.cs
- RuleConditionDialog.Designer.cs
- QilScopedVisitor.cs
- JapaneseLunisolarCalendar.cs
- CodeIdentifier.cs
- Compiler.cs
- DataMemberListEditor.cs
- DesignerCategoryAttribute.cs
- InvalidPipelineStoreException.cs
- ReadOnlyDictionary.cs
- safesecurityhelperavalon.cs
- RuntimeIdentifierPropertyAttribute.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- ProgressBarAutomationPeer.cs
- JsonServiceDocumentSerializer.cs
- CornerRadius.cs
- RangeContentEnumerator.cs
- Composition.cs
- InputBinding.cs
- MarshalDirectiveException.cs
- RSAPKCS1SignatureFormatter.cs
- QuaternionAnimation.cs
- SequentialWorkflowHeaderFooter.cs
- SimplePropertyEntry.cs
- XsltSettings.cs
- ConfigurationPropertyCollection.cs
- TdsParameterSetter.cs
- CredentialCache.cs
- EventLogEntry.cs
- TimelineGroup.cs
- Vector3D.cs
- ParenthesizePropertyNameAttribute.cs
- AppearanceEditorPart.cs
- CancellationHandler.cs
- Logging.cs
- DataTableReader.cs
- PerformanceCounterPermissionAttribute.cs
- SafeNativeMethods.cs
- Misc.cs
- TrustManagerMoreInformation.cs
- TraceRecord.cs
- ValidationErrorCollection.cs
- DecoderExceptionFallback.cs
- login.cs
- SelectedDatesCollection.cs
- ConfigXmlReader.cs
- ContentWrapperAttribute.cs
- DocumentXPathNavigator.cs
- TextDecorationLocationValidation.cs
- AssociationEndMember.cs
- SharedUtils.cs
- AdvancedBindingEditor.cs
- UnsafeNativeMethods.cs
- DesignerHierarchicalDataSourceView.cs
- StaticFileHandler.cs
- RouteItem.cs
- CookieProtection.cs
- SQLDecimal.cs
- ProfilePropertyNameValidator.cs
- AttributeSetAction.cs
- PointHitTestParameters.cs
- ReadWriteObjectLock.cs
- OleDbRowUpdatedEvent.cs
- PackageRelationshipSelector.cs
- SQLByte.cs
- PEFileEvidenceFactory.cs
- DataContractSerializerSection.cs
- ExpressionNode.cs
- InstalledFontCollection.cs
- AddingNewEventArgs.cs
- AllMembershipCondition.cs
- PointHitTestParameters.cs
- ControlCollection.cs
- BamlLocalizationDictionary.cs
- StatusStrip.cs
- ColorTransform.cs
- MobileControlDesigner.cs
- MD5.cs