Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / System / Windows / Media / DrawingServices.cs / 1 / DrawingServices.cs
//---------------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // Description: Implements services for Drawings including walking, bounding, // and hit-testing. // // History: // // 2004/11/19 : [....] - Created it. // //--------------------------------------------------------------------------- using System.Diagnostics; using System.Windows.Media.Animation; namespace System.Windows.Media { ////// Implements services for Drawings including walking, bounding, and /// hit-testing. /// internal static class DrawingServices { ////// Determines whether or not a point exists in a Drawing /// /// Drawing to hit-test /// Point to hit-test for ////// 'true' if the point exists within the drawing, 'false' otherwise /// internal static bool HitTestPoint(Drawing drawing, Point point) { if (drawing != null) { HitTestDrawingContextWalker ctx = new HitTestWithPointDrawingContextWalker(point); drawing.WalkCurrentValue(ctx); return ctx.IsHit; } else { return false; } } ////// Hit-tests a Drawing against a PathGeometry /// /// The drawing to hit test against /// The geometry (in local coordinate space) to hit test. ////// IntersectionDetail that describes the hit result /// internal static IntersectionDetail HitTestGeometry(Drawing drawing, PathGeometry geometry) { if (drawing != null) { HitTestDrawingContextWalker ctx = new HitTestWithGeometryDrawingContextWalker(geometry); drawing.WalkCurrentValue(ctx); return ctx.IntersectionDetail; } else { return IntersectionDetail.Empty; } } ////// Converts a RenderData content representation into a DrawingGroup /// content representation. /// /// The RenderData to convert ////// A new DrawingGroup representation that is functionally equivalent to the /// passed-in RenderData. /// internal static DrawingGroup DrawingGroupFromRenderData(RenderData renderData) { // // Create & open a new DrawingGroup // DrawingGroup drawingGroup = new DrawingGroup(); DrawingContext dc = drawingGroup.Open(); // // Create a DrawingGroup from the RenderData by walking // the RenderData & having it forward it's base value's // and animations to DrawingGroup // // // The Drawing tree we're about to produce should not be an inheritance context, // since that would place all mutable Freezables in the render data into shared // state, which would in turn case them to lose their inheritance context entirely. // This is controlled by setting "CanBeInheritanceContext" to false on the // DrawingContext which will then be applied to all new objects it creates. // DrawingDrawingContext ddc = dc as DrawingDrawingContext; if (ddc != null) { ddc.CanBeInheritanceContext = false; } DrawingContextDrawingContextWalker walker = new DrawingContextDrawingContextWalker(dc); renderData.BaseValueDrawingContextWalk(walker); // // Close the DrawingContext & return the new DrawingGroup // dc.Close(); return drawingGroup; } } } // 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
- AmbiguousMatchException.cs
- StateDesigner.Helpers.cs
- SafeLibraryHandle.cs
- DetailsViewCommandEventArgs.cs
- MatrixAnimationBase.cs
- XmlSchemaSubstitutionGroup.cs
- SessionState.cs
- WebExceptionStatus.cs
- InputDevice.cs
- TableLayoutPanelCodeDomSerializer.cs
- CodeGenerator.cs
- VisualTreeUtils.cs
- DataObjectAttribute.cs
- ExtensionQuery.cs
- Size.cs
- DataContractSerializerOperationBehavior.cs
- FilteredAttributeCollection.cs
- ToolStripHighContrastRenderer.cs
- HttpContextWrapper.cs
- HttpCacheParams.cs
- XmlSchemaSimpleContentRestriction.cs
- FormViewModeEventArgs.cs
- StorageModelBuildProvider.cs
- ProxyWebPartManager.cs
- ServicePointManager.cs
- ListChunk.cs
- NullableIntAverageAggregationOperator.cs
- SerializerProvider.cs
- CfgArc.cs
- DocumentDesigner.cs
- SetterBase.cs
- UpdateCompiler.cs
- CompilerResults.cs
- DispatchOperation.cs
- XmlSchemaValidationException.cs
- PermissionSetEnumerator.cs
- UIServiceHelper.cs
- ModulesEntry.cs
- ToolStripDesignerAvailabilityAttribute.cs
- HandleRef.cs
- UIElementCollection.cs
- Publisher.cs
- HiddenField.cs
- EventProviderWriter.cs
- codemethodreferenceexpression.cs
- TextBox.cs
- ToolStripSystemRenderer.cs
- EncoderFallback.cs
- CodeCompiler.cs
- LogArchiveSnapshot.cs
- DetailsViewInsertEventArgs.cs
- PersonalizationDictionary.cs
- Style.cs
- SymLanguageType.cs
- ColorAnimationUsingKeyFrames.cs
- ApplicationSecurityManager.cs
- EntryIndex.cs
- StandardMenuStripVerb.cs
- DrawListViewSubItemEventArgs.cs
- WmpBitmapDecoder.cs
- TiffBitmapEncoder.cs
- mediaeventshelper.cs
- CorrelationExtension.cs
- ApplicationProxyInternal.cs
- _DomainName.cs
- COM2EnumConverter.cs
- CorrelationManager.cs
- ConnectorDragDropGlyph.cs
- ReflectEventDescriptor.cs
- GridViewColumnCollectionChangedEventArgs.cs
- _Events.cs
- EntityContainer.cs
- DataObject.cs
- DelayLoadType.cs
- ListBoxItem.cs
- _DisconnectOverlappedAsyncResult.cs
- SocketCache.cs
- EarlyBoundInfo.cs
- CodeNamespaceImport.cs
- HeaderLabel.cs
- MediaContextNotificationWindow.cs
- Helpers.cs
- RightsManagementInformation.cs
- SkinBuilder.cs
- GridViewRowPresenterBase.cs
- IteratorFilter.cs
- FontSourceCollection.cs
- CriticalExceptions.cs
- LineProperties.cs
- SystemSounds.cs
- ControlCommandSet.cs
- DetailsViewRowCollection.cs
- NamespaceMapping.cs
- ModifierKeysValueSerializer.cs
- CompilerParameters.cs
- EncoderExceptionFallback.cs
- indexingfiltermarshaler.cs
- DataRelationCollection.cs
- QuestionEventArgs.cs
- WindowsGraphicsWrapper.cs