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
- MULTI_QI.cs
- UnaryExpressionHelper.cs
- ObjRef.cs
- PerformanceCounterPermissionEntryCollection.cs
- TemplatedControlDesigner.cs
- AdapterUtil.cs
- DBConnection.cs
- IgnoreFileBuildProvider.cs
- ITreeGenerator.cs
- ShapingEngine.cs
- DataGridViewColumnCollection.cs
- SystemGatewayIPAddressInformation.cs
- ColorInterpolationModeValidation.cs
- BitmapMetadataBlob.cs
- WebPartDisplayModeEventArgs.cs
- PackagingUtilities.cs
- DefaultTraceListener.cs
- XmlCustomFormatter.cs
- RenameRuleObjectDialog.cs
- GridViewSortEventArgs.cs
- Rotation3DAnimationBase.cs
- CacheHelper.cs
- MergablePropertyAttribute.cs
- CAGDesigner.cs
- DataChangedEventManager.cs
- DataProtection.cs
- ItemsChangedEventArgs.cs
- CodeGenerator.cs
- DmlSqlGenerator.cs
- BufferedGraphicsContext.cs
- SupportingTokenAuthenticatorSpecification.cs
- CodeParameterDeclarationExpression.cs
- StructuralType.cs
- StrongNamePublicKeyBlob.cs
- FunctionParameter.cs
- ExpressionVisitor.cs
- QueryExecutionOption.cs
- Parameter.cs
- TypeReference.cs
- CodeSnippetStatement.cs
- OperationCanceledException.cs
- HighContrastHelper.cs
- SeekableReadStream.cs
- LayoutDump.cs
- IncrementalCompileAnalyzer.cs
- FixedSOMTextRun.cs
- streamingZipPartStream.cs
- AvTrace.cs
- CallTemplateAction.cs
- PropertyTabAttribute.cs
- LazyTextWriterCreator.cs
- TextTabProperties.cs
- QualificationDataAttribute.cs
- XamlVector3DCollectionSerializer.cs
- StateMachineWorkflowDesigner.cs
- MetaModel.cs
- ConfigurationCollectionAttribute.cs
- ListViewSortEventArgs.cs
- Attachment.cs
- CompositeTypefaceMetrics.cs
- COM2PictureConverter.cs
- PolicyFactory.cs
- XmlSiteMapProvider.cs
- ExtensibleClassFactory.cs
- AlignmentXValidation.cs
- IRCollection.cs
- contentDescriptor.cs
- TextSimpleMarkerProperties.cs
- LassoSelectionBehavior.cs
- RequiredFieldValidator.cs
- SelectionProcessor.cs
- LambdaCompiler.Logical.cs
- ProtocolElementCollection.cs
- objectresult_tresulttype.cs
- WindowsTab.cs
- SetStateEventArgs.cs
- CheckBoxStandardAdapter.cs
- PropertyOrder.cs
- RouteParser.cs
- StyleCollection.cs
- DrawingImage.cs
- DebugView.cs
- DbProviderServices.cs
- ArrayItemReference.cs
- TextEffect.cs
- ClipboardData.cs
- HiddenFieldPageStatePersister.cs
- serverconfig.cs
- WebPartEventArgs.cs
- AdPostCacheSubstitution.cs
- SinglePageViewer.cs
- CodeBlockBuilder.cs
- IntSecurity.cs
- CounterSampleCalculator.cs
- BitmapEffect.cs
- AutomationPatternInfo.cs
- NonDualMessageSecurityOverHttp.cs
- MarshalByRefObject.cs
- CatalogPartDesigner.cs
- HostingPreferredMapPath.cs