Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- PageCatalogPart.cs
- DesignBindingValueUIHandler.cs
- Menu.cs
- DynamicRendererThreadManager.cs
- Int16.cs
- StorageMappingItemLoader.cs
- ScriptManagerProxy.cs
- Visitor.cs
- HierarchicalDataBoundControlAdapter.cs
- NTAccount.cs
- DataSourceHelper.cs
- FilterInvalidBodyAccessException.cs
- ApplicationDirectoryMembershipCondition.cs
- RequestResizeEvent.cs
- FormViewDeleteEventArgs.cs
- OleDbConnection.cs
- XamlBuildTaskServices.cs
- TreeNodeBinding.cs
- DrawingContextWalker.cs
- MailWebEventProvider.cs
- FormView.cs
- AuthenticatingEventArgs.cs
- AnnotationResourceCollection.cs
- BindingUtils.cs
- DllHostedComPlusServiceHost.cs
- tibetanshape.cs
- DetailsViewDeletedEventArgs.cs
- GeometryModel3D.cs
- AspCompat.cs
- OperandQuery.cs
- ReachSerializerAsync.cs
- DateBoldEvent.cs
- TableLayoutRowStyleCollection.cs
- XmlAnyElementAttributes.cs
- PropertyGrid.cs
- ContentElementAutomationPeer.cs
- TextTreeInsertElementUndoUnit.cs
- EdmScalarPropertyAttribute.cs
- CopyOnWriteList.cs
- LongCountAggregationOperator.cs
- WriteStateInfoBase.cs
- uribuilder.cs
- HtmlPanelAdapter.cs
- EntityClassGenerator.cs
- RadialGradientBrush.cs
- altserialization.cs
- CroppedBitmap.cs
- ProfileParameter.cs
- Paragraph.cs
- PrimaryKeyTypeConverter.cs
- TextSerializer.cs
- DesignerCatalogPartChrome.cs
- UnionCodeGroup.cs
- KnownTypesProvider.cs
- BasicViewGenerator.cs
- TransactionManager.cs
- Mapping.cs
- JulianCalendar.cs
- loginstatus.cs
- ReaderContextStackData.cs
- DropShadowBitmapEffect.cs
- QilPatternFactory.cs
- Size.cs
- followingquery.cs
- Message.cs
- ToolStripContentPanel.cs
- ErrorEventArgs.cs
- Sentence.cs
- DataViewManagerListItemTypeDescriptor.cs
- TypeDelegator.cs
- ZipIOLocalFileDataDescriptor.cs
- PolicyLevel.cs
- DropShadowBitmapEffect.cs
- CellIdBoolean.cs
- SBCSCodePageEncoding.cs
- EntityDataSourceColumn.cs
- PerformanceCounters.cs
- CacheAxisQuery.cs
- ControlCachePolicy.cs
- InputScopeAttribute.cs
- MobileControl.cs
- PreloadedPackages.cs
- MaterialCollection.cs
- ContextStack.cs
- AssemblyInfo.cs
- SqlCharStream.cs
- controlskin.cs
- SQlBooleanStorage.cs
- BrowserTree.cs
- AlternateViewCollection.cs
- WSHttpBindingBaseElement.cs
- FlagsAttribute.cs
- PersonalizationStateQuery.cs
- SafeIUnknown.cs
- SortQuery.cs
- SafeViewOfFileHandle.cs
- ResourceReferenceExpression.cs
- ContainerControl.cs
- FontEmbeddingManager.cs
- MetadataHelper.cs