Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Core / CSharp / 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 : timothyc - 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. // // Description: Implements services for Drawings including walking, bounding, // and hit-testing. // // History: // // 2004/11/19 : timothyc - 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CharacterHit.cs
- WindowsGraphicsCacheManager.cs
- ReceiveParametersContent.cs
- DictionaryEntry.cs
- ButtonBaseAutomationPeer.cs
- ViewStateModeByIdAttribute.cs
- DescendentsWalker.cs
- OSEnvironmentHelper.cs
- Window.cs
- BitmapEffectDrawing.cs
- DataGridRow.cs
- CursorEditor.cs
- SelectManyQueryOperator.cs
- ToolstripProfessionalRenderer.cs
- ControlBuilder.cs
- Stylus.cs
- UIElement3D.cs
- EdmEntityTypeAttribute.cs
- ModuleConfigurationInfo.cs
- MobileResource.cs
- XPathNavigator.cs
- FirstMatchCodeGroup.cs
- Pair.cs
- CompatibleComparer.cs
- LinqTreeNodeEvaluator.cs
- PlaceHolder.cs
- AlternationConverter.cs
- EventManager.cs
- Dynamic.cs
- Panel.cs
- XmlEncodedRawTextWriter.cs
- Pair.cs
- XPathArrayIterator.cs
- DelegateSerializationHolder.cs
- UnitySerializationHolder.cs
- XmlMembersMapping.cs
- VerticalAlignConverter.cs
- InkCanvasSelection.cs
- TemplateInstanceAttribute.cs
- Timeline.cs
- UIServiceHelper.cs
- TypeUnloadedException.cs
- KeyBinding.cs
- WindowsEditBox.cs
- ErrorStyle.cs
- CollectionView.cs
- Light.cs
- InputReport.cs
- RuleSettingsCollection.cs
- Relationship.cs
- LinqMaximalSubtreeNominator.cs
- DataRecord.cs
- SubMenuStyleCollection.cs
- BidOverLoads.cs
- AmbientLight.cs
- typedescriptorpermissionattribute.cs
- PropagatorResult.cs
- objectresult_tresulttype.cs
- CompositeActivityTypeDescriptorProvider.cs
- WorkflowTransactionOptions.cs
- ControlType.cs
- KnownBoxes.cs
- DataViewSetting.cs
- OutputCacheSection.cs
- ManagedFilter.cs
- TextBoxDesigner.cs
- ClrProviderManifest.cs
- Nullable.cs
- MenuItemCollection.cs
- XmlSchemaValidationException.cs
- ViewBase.cs
- ClientApiGenerator.cs
- AggregationMinMaxHelpers.cs
- GifBitmapEncoder.cs
- HttpFileCollectionWrapper.cs
- TextSchema.cs
- SqlTriggerAttribute.cs
- TypeInitializationException.cs
- SQLByte.cs
- RbTree.cs
- SmiContext.cs
- RegexBoyerMoore.cs
- Crc32.cs
- HttpPostedFile.cs
- GeneralTransform3DGroup.cs
- VectorCollectionConverter.cs
- RightsManagementInformation.cs
- StringReader.cs
- TextDocumentView.cs
- BrowserDefinitionCollection.cs
- DbCommandTree.cs
- TerminatorSinks.cs
- TextEditorContextMenu.cs
- DeclarativeCatalogPartDesigner.cs
- EraserBehavior.cs
- DataSourceControl.cs
- NonSerializedAttribute.cs
- PageBuildProvider.cs
- TracingConnectionInitiator.cs
- Win32PrintDialog.cs