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
- DesignTimeHTMLTextWriter.cs
- RuntimeHandles.cs
- SliderAutomationPeer.cs
- JournalEntryListConverter.cs
- DoubleCollectionValueSerializer.cs
- DebugViewWriter.cs
- FixedSOMFixedBlock.cs
- AutoResetEvent.cs
- KeyToListMap.cs
- ExpressionBuilder.cs
- ConcurrentBag.cs
- XmlTypeMapping.cs
- EditingCommands.cs
- ManipulationPivot.cs
- TerminatorSinks.cs
- SspiHelper.cs
- TokenizerHelper.cs
- TextSpanModifier.cs
- DesignerTransactionCloseEvent.cs
- EntityFunctions.cs
- DataObjectFieldAttribute.cs
- HtmlInputHidden.cs
- PointAnimationUsingPath.cs
- XmlDataSourceView.cs
- WindowsGrip.cs
- QueryCreatedEventArgs.cs
- XmlSchemaNotation.cs
- SmtpMail.cs
- RadioButton.cs
- InstanceData.cs
- XPathEmptyIterator.cs
- SqlDataSource.cs
- DataListItemCollection.cs
- SqlProviderManifest.cs
- FontEmbeddingManager.cs
- CTreeGenerator.cs
- TypePropertyEditor.cs
- TextStore.cs
- precedingsibling.cs
- UnmanagedMarshal.cs
- RequestResizeEvent.cs
- PlatformCulture.cs
- smtpconnection.cs
- MimeWriter.cs
- AutomationEvent.cs
- RegisteredScript.cs
- CustomGrammar.cs
- ResXFileRef.cs
- InkCanvasInnerCanvas.cs
- ControlCachePolicy.cs
- SimplePropertyEntry.cs
- SqlDataSourceAdvancedOptionsForm.cs
- nulltextnavigator.cs
- Conditional.cs
- SubMenuStyle.cs
- ListQueryResults.cs
- Int16Converter.cs
- BindingBase.cs
- WriteStateInfoBase.cs
- HttpResponseHeader.cs
- CustomAttributeSerializer.cs
- MenuEventArgs.cs
- FileVersionInfo.cs
- ToolStripContentPanel.cs
- PropertyManager.cs
- Geometry3D.cs
- WorkflowTransactionService.cs
- RuntimeHelpers.cs
- DataBoundLiteralControl.cs
- RepeaterItem.cs
- MonthChangedEventArgs.cs
- FormViewInsertEventArgs.cs
- Underline.cs
- EventTrigger.cs
- figurelength.cs
- Process.cs
- WebBrowserNavigatingEventHandler.cs
- HtmlInputButton.cs
- WsdlWriter.cs
- CallContext.cs
- ConvertersCollection.cs
- OutputWindow.cs
- LookupNode.cs
- BindingsCollection.cs
- DataMemberConverter.cs
- FontStyles.cs
- TdsParserHelperClasses.cs
- Dynamic.cs
- LambdaCompiler.Binary.cs
- CqlErrorHelper.cs
- DesignerLinkAdapter.cs
- QueueAccessMode.cs
- UserControlFileEditor.cs
- Vector3DCollectionConverter.cs
- TraceProvider.cs
- SqlCaseSimplifier.cs
- Utilities.cs
- FilteredAttributeCollection.cs
- Transform3DCollection.cs
- ConstraintEnumerator.cs