Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- WrappingXamlSchemaContext.cs
- ListView.cs
- BinHexEncoder.cs
- StubHelpers.cs
- ObfuscateAssemblyAttribute.cs
- BaseProcessor.cs
- XPathAncestorQuery.cs
- ListViewItemEventArgs.cs
- XmlSignatureManifest.cs
- DataSourceNameHandler.cs
- TextTreeInsertElementUndoUnit.cs
- Trigger.cs
- DBConcurrencyException.cs
- SoapAttributes.cs
- InvalidPrinterException.cs
- QueryCursorEventArgs.cs
- PropertyMapper.cs
- RequestDescription.cs
- HttpClientCertificate.cs
- FixUp.cs
- JsonFormatGeneratorStatics.cs
- WorkflowInstance.cs
- LocationSectionRecord.cs
- BlurEffect.cs
- QualifiedId.cs
- AdRotatorDesigner.cs
- SamlAttributeStatement.cs
- DesignBindingValueUIHandler.cs
- XmlSchemaGroupRef.cs
- HttpProcessUtility.cs
- FileDialog.cs
- ModelVisual3D.cs
- UnsupportedPolicyOptionsException.cs
- HttpCapabilitiesBase.cs
- SessionEndingEventArgs.cs
- _UriTypeConverter.cs
- XmlArrayItemAttribute.cs
- ActivityExecutorDelegateInfo.cs
- ToggleProviderWrapper.cs
- ApplicationActivator.cs
- TextContainerHelper.cs
- GridItem.cs
- TextViewSelectionProcessor.cs
- HyperLink.cs
- FunctionDescription.cs
- ActivityDesigner.cs
- AssemblyBuilder.cs
- CodeSnippetTypeMember.cs
- PropertyPath.cs
- ICspAsymmetricAlgorithm.cs
- TextRangeEditTables.cs
- HttpRequest.cs
- Border.cs
- Timer.cs
- SerializationUtility.cs
- StrokeNodeData.cs
- PipeStream.cs
- TypeExtension.cs
- ScaleTransform3D.cs
- TransformerTypeCollection.cs
- StorageEntityTypeMapping.cs
- PreProcessInputEventArgs.cs
- PanelStyle.cs
- RSATokenProvider.cs
- WindowsMenu.cs
- QueryOutputWriter.cs
- ButtonBase.cs
- Decorator.cs
- MultiSelectRootGridEntry.cs
- EditorAttribute.cs
- CurrencyManager.cs
- SqlServer2KCompatibilityAnnotation.cs
- EmptyControlCollection.cs
- NoneExcludedImageIndexConverter.cs
- complextypematerializer.cs
- AudioFileOut.cs
- ArgumentException.cs
- TargetException.cs
- AppliedDeviceFiltersDialog.cs
- ProviderConnectionPointCollection.cs
- HttpListenerException.cs
- FilteredDataSetHelper.cs
- Interop.cs
- URIFormatException.cs
- MailAddress.cs
- ApplicationFileParser.cs
- TypeToken.cs
- FormViewUpdateEventArgs.cs
- CurrentChangingEventManager.cs
- ShaderEffect.cs
- Sequence.cs
- PolyBezierSegment.cs
- Currency.cs
- DefaultPropertyAttribute.cs
- Throw.cs
- MaxMessageSizeStream.cs
- AssemblySettingAttributes.cs
- BitmapEffect.cs
- DrawingBrush.cs
- Activator.cs