Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Core / CSharp / System / Windows / Media / GeometryDrawing.cs / 1 / GeometryDrawing.cs
//---------------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // Description: GeometryDrawing represents a drawing operation that combines // a geometry with and brush and/or pen to produce rendered // content. // // History: // // 2004/11/17 : timothyc - Created it. // //--------------------------------------------------------------------------- using System.Diagnostics; namespace System.Windows.Media { ////// GeometryDrawing represents a drawing operation that combines /// a geometry with and brush and/or pen to produce rendered /// content. /// public sealed partial class GeometryDrawing : Drawing { #region Constructors ////// Default GeometryDrawing constructor. /// Constructs an object with all properties set to their default values /// public GeometryDrawing() { } ////// Three-argument GeometryDrawing constructor. /// Constructs an object with the Brush, Pen, and Geometry properties /// set to the value of their respective arguments. /// public GeometryDrawing(Brush brush, Pen pen, Geometry geometry) { Brush = brush; Pen = pen; Geometry = geometry; } #endregion #region Internal methods ////// Calls methods on the DrawingContext that are equivalent to the /// Drawing with the Drawing's current value. /// internal override void WalkCurrentValue(DrawingContextWalker ctx) { // We avoid unneccessary ShouldStopWalking checks based on assumptions // about when ShouldStopWalking is set. Guard that assumption with an // assertion. See DrawingGroup.WalkCurrentValue comment for more details. Debug.Assert(!ctx.ShouldStopWalking); ctx.DrawGeometry( Brush, Pen, Geometry ); } ////// PrecomputeCore /// /// Currently this method checks if the geometry drawing requires realization updates. /// Realization updates are needed if the fill/stroke brush contain drawings or if the /// fill/stroke brush are VisualBrushes. /// internal override void PrecomputeCore() { RequiresRealizationUpdates = false; if (Geometry != null) { Brush fillBrush = Brush; Pen pen = Pen; Brush strokeBrush = (pen != null) ? pen.Brush : null; if (fillBrush != null) { fillBrush.Precompute(); RequiresRealizationUpdates |= fillBrush.RequiresRealizationUpdates; } if (strokeBrush != null) { strokeBrush.Precompute(); RequiresRealizationUpdates |= strokeBrush.RequiresRealizationUpdates; } } } ////// Pushes updates into the geometries fill brush or stroke brush if necessary. /// internal override void UpdateRealizations(RealizationContext realizationContext) { Debug.Assert(realizationContext != null); if (RequiresRealizationUpdates) { Debug.Assert(Geometry != null, "RequiresRealizationUpdates is true if Geometry != null."); Brush fillBrush = Brush; Pen pen = Pen; Brush strokeBrush = (pen != null) ? pen.Brush : null; // The bounding box of the geometry can affect at one scale resolutions have to be created. // (E.g. StretchMode.Fill). Rect bounds = Geometry.GetBoundsInternal(null, Matrix.Identity); if (fillBrush != null) { fillBrush.UpdateRealizations(bounds, realizationContext); } if (strokeBrush != null) { strokeBrush.UpdateRealizations(bounds, realizationContext); } } } #endregion Internal methods } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // Description: GeometryDrawing represents a drawing operation that combines // a geometry with and brush and/or pen to produce rendered // content. // // History: // // 2004/11/17 : timothyc - Created it. // //--------------------------------------------------------------------------- using System.Diagnostics; namespace System.Windows.Media { ////// GeometryDrawing represents a drawing operation that combines /// a geometry with and brush and/or pen to produce rendered /// content. /// public sealed partial class GeometryDrawing : Drawing { #region Constructors ////// Default GeometryDrawing constructor. /// Constructs an object with all properties set to their default values /// public GeometryDrawing() { } ////// Three-argument GeometryDrawing constructor. /// Constructs an object with the Brush, Pen, and Geometry properties /// set to the value of their respective arguments. /// public GeometryDrawing(Brush brush, Pen pen, Geometry geometry) { Brush = brush; Pen = pen; Geometry = geometry; } #endregion #region Internal methods ////// Calls methods on the DrawingContext that are equivalent to the /// Drawing with the Drawing's current value. /// internal override void WalkCurrentValue(DrawingContextWalker ctx) { // We avoid unneccessary ShouldStopWalking checks based on assumptions // about when ShouldStopWalking is set. Guard that assumption with an // assertion. See DrawingGroup.WalkCurrentValue comment for more details. Debug.Assert(!ctx.ShouldStopWalking); ctx.DrawGeometry( Brush, Pen, Geometry ); } ////// PrecomputeCore /// /// Currently this method checks if the geometry drawing requires realization updates. /// Realization updates are needed if the fill/stroke brush contain drawings or if the /// fill/stroke brush are VisualBrushes. /// internal override void PrecomputeCore() { RequiresRealizationUpdates = false; if (Geometry != null) { Brush fillBrush = Brush; Pen pen = Pen; Brush strokeBrush = (pen != null) ? pen.Brush : null; if (fillBrush != null) { fillBrush.Precompute(); RequiresRealizationUpdates |= fillBrush.RequiresRealizationUpdates; } if (strokeBrush != null) { strokeBrush.Precompute(); RequiresRealizationUpdates |= strokeBrush.RequiresRealizationUpdates; } } } ////// Pushes updates into the geometries fill brush or stroke brush if necessary. /// internal override void UpdateRealizations(RealizationContext realizationContext) { Debug.Assert(realizationContext != null); if (RequiresRealizationUpdates) { Debug.Assert(Geometry != null, "RequiresRealizationUpdates is true if Geometry != null."); Brush fillBrush = Brush; Pen pen = Pen; Brush strokeBrush = (pen != null) ? pen.Brush : null; // The bounding box of the geometry can affect at one scale resolutions have to be created. // (E.g. StretchMode.Fill). Rect bounds = Geometry.GetBoundsInternal(null, Matrix.Identity); if (fillBrush != null) { fillBrush.UpdateRealizations(bounds, realizationContext); } if (strokeBrush != null) { strokeBrush.UpdateRealizations(bounds, realizationContext); } } } #endregion Internal methods } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- xamlnodes.cs
- SqlInternalConnection.cs
- TCEAdapterGenerator.cs
- SafeBitVector32.cs
- AssociationEndMember.cs
- CapabilitiesSection.cs
- XmlQueryTypeFactory.cs
- PersonalizationStateInfo.cs
- cookiecollection.cs
- HijriCalendar.cs
- DocumentPage.cs
- ApplicationHost.cs
- __FastResourceComparer.cs
- ExtenderControl.cs
- EntityDataSourceContextCreatedEventArgs.cs
- CodeCastExpression.cs
- KeyNotFoundException.cs
- ThicknessAnimation.cs
- WebDescriptionAttribute.cs
- FileDialogCustomPlace.cs
- Rules.cs
- InboundActivityHelper.cs
- _SslState.cs
- RouteParametersHelper.cs
- SystemWebSectionGroup.cs
- CounterCreationDataCollection.cs
- DetailsViewRowCollection.cs
- XmlSchemaAppInfo.cs
- smtppermission.cs
- StreamUpgradeBindingElement.cs
- Bidi.cs
- CodeAccessPermission.cs
- ProxySimple.cs
- StrokeCollectionConverter.cs
- ResourceFallbackManager.cs
- dbdatarecord.cs
- ProviderConnectionPointCollection.cs
- FontFamilyValueSerializer.cs
- ECDiffieHellmanCngPublicKey.cs
- DataGridCommandEventArgs.cs
- SerializationEventsCache.cs
- LocalizabilityAttribute.cs
- TemplatePagerField.cs
- BuiltInPermissionSets.cs
- PrinterResolution.cs
- ReferentialConstraint.cs
- WebService.cs
- XmlTypeMapping.cs
- BindingExpressionBase.cs
- PieceNameHelper.cs
- WeakEventTable.cs
- HttpModule.cs
- TaskFactory.cs
- PolyBezierSegment.cs
- LicFileLicenseProvider.cs
- LinearGradientBrush.cs
- TabItemAutomationPeer.cs
- BulletDecorator.cs
- LocatorPartList.cs
- DataColumnCollection.cs
- HtmlHead.cs
- InfoCardTrace.cs
- PresentationTraceSources.cs
- TypeUsage.cs
- LicenseException.cs
- ToolStripItem.cs
- TableLayoutRowStyleCollection.cs
- BamlLocalizableResourceKey.cs
- BrowserTree.cs
- Int32Converter.cs
- SerTrace.cs
- TextBoxView.cs
- _TLSstream.cs
- InputLanguage.cs
- SettingsBindableAttribute.cs
- SerializerDescriptor.cs
- Point3DIndependentAnimationStorage.cs
- LineUtil.cs
- CodeAttributeDeclaration.cs
- DocumentGridContextMenu.cs
- ValidatorCompatibilityHelper.cs
- AuthorizationSection.cs
- WindowHideOrCloseTracker.cs
- ReferenceConverter.cs
- SliderAutomationPeer.cs
- SqlReorderer.cs
- DocumentSchemaValidator.cs
- _BaseOverlappedAsyncResult.cs
- DBCSCodePageEncoding.cs
- AffineTransform3D.cs
- DiscoveryEndpointValidator.cs
- OverflowException.cs
- DashStyle.cs
- StretchValidation.cs
- IdentityModelDictionary.cs
- HebrewNumber.cs
- WindowsListViewGroup.cs
- SetStateEventArgs.cs
- CatalogPartCollection.cs
- SQLSingleStorage.cs