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
- NativeMethods.cs
- Vars.cs
- ContainerFilterService.cs
- VScrollBar.cs
- DefaultBindingPropertyAttribute.cs
- MappingSource.cs
- XsdCachingReader.cs
- DependencySource.cs
- GridViewColumnCollection.cs
- ProgressBarAutomationPeer.cs
- XamlStackWriter.cs
- EventSchemaTraceListener.cs
- ImageListImageEditor.cs
- UrlPropertyAttribute.cs
- ProcessHostMapPath.cs
- KnownAssemblyEntry.cs
- Quaternion.cs
- COSERVERINFO.cs
- DataServiceCollectionOfT.cs
- MergeLocalizationDirectives.cs
- TreeNodeStyleCollectionEditor.cs
- RijndaelManagedTransform.cs
- EntityWithKeyStrategy.cs
- EventDescriptorCollection.cs
- XPathDescendantIterator.cs
- TraceContext.cs
- DebuggerAttributes.cs
- PointAnimationClockResource.cs
- TrackingMemoryStreamFactory.cs
- ToolStripPanelCell.cs
- StyleReferenceConverter.cs
- CompilerErrorCollection.cs
- FileDialog.cs
- AlternateViewCollection.cs
- SpellerInterop.cs
- Button.cs
- DBSqlParserColumn.cs
- PopOutPanel.cs
- PermissionSetTriple.cs
- SEHException.cs
- PaperSource.cs
- TemplatePagerField.cs
- DataGridPagerStyle.cs
- GridEntry.cs
- SqlBuilder.cs
- X509SecurityTokenProvider.cs
- HttpPostedFileWrapper.cs
- Gdiplus.cs
- Cursor.cs
- QueryOutputWriter.cs
- ItemList.cs
- MaterialGroup.cs
- ArraySegment.cs
- PersonalizableAttribute.cs
- MessagePartDescription.cs
- WebContext.cs
- CompareValidator.cs
- WebZone.cs
- FormView.cs
- DbDataRecord.cs
- SQLBoolean.cs
- ControlUtil.cs
- MessageBox.cs
- LifetimeServices.cs
- Setter.cs
- ImageMap.cs
- QilLoop.cs
- HttpWriter.cs
- ExeContext.cs
- StaticDataManager.cs
- XsltSettings.cs
- TreeWalker.cs
- _LoggingObject.cs
- _SslState.cs
- TypedReference.cs
- SlotInfo.cs
- SoapSchemaExporter.cs
- DataGridViewCellValueEventArgs.cs
- BinaryObjectInfo.cs
- RSAOAEPKeyExchangeFormatter.cs
- Win32.cs
- DesignerLabelAdapter.cs
- TcpProcessProtocolHandler.cs
- CompilerTypeWithParams.cs
- CompilerTypeWithParams.cs
- NonBatchDirectoryCompiler.cs
- StorageRoot.cs
- CodeDomConfigurationHandler.cs
- FrameSecurityDescriptor.cs
- HotSpotCollection.cs
- InputEventArgs.cs
- UnsafeNativeMethods.cs
- ZipIOExtraField.cs
- CustomErrorsSectionWrapper.cs
- SqlTypeSystemProvider.cs
- FrameworkTemplate.cs
- UpdatePanelControlTrigger.cs
- OdbcConnectionStringbuilder.cs
- CheckableControlBaseAdapter.cs
- DataGridViewComboBoxColumn.cs