Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media / DrawingServices.cs / 1305600 / 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
- XmlTextReader.cs
- GeneratedContractType.cs
- WriteTimeStream.cs
- CqlErrorHelper.cs
- FileReservationCollection.cs
- PropertyGroupDescription.cs
- QueryReaderSettings.cs
- AttributeParameterInfo.cs
- ItemContainerPattern.cs
- ImageSource.cs
- Imaging.cs
- VerticalConnector.xaml.cs
- ReliableSessionBindingElementImporter.cs
- Panel.cs
- Effect.cs
- SettingsProviderCollection.cs
- SecureEnvironment.cs
- PropertyGridDesigner.cs
- PermissionSetEnumerator.cs
- InfoCardCryptoHelper.cs
- XXXInfos.cs
- DatePickerAutomationPeer.cs
- InvariantComparer.cs
- ManagedFilter.cs
- XmlText.cs
- WindowsStartMenu.cs
- EncoderFallback.cs
- _PooledStream.cs
- BindingSource.cs
- OleDbWrapper.cs
- LinkedResource.cs
- DefaultPropertyAttribute.cs
- BitmapEffect.cs
- VectorAnimation.cs
- XsltInput.cs
- TypeConverterHelper.cs
- DataServiceQueryException.cs
- CustomTypeDescriptor.cs
- CssTextWriter.cs
- ClientRuntime.cs
- CodePageEncoding.cs
- TimeoutValidationAttribute.cs
- PrimitiveCodeDomSerializer.cs
- PersianCalendar.cs
- ByteStreamGeometryContext.cs
- GeneralTransform3DTo2DTo3D.cs
- SqlFileStream.cs
- TerminatorSinks.cs
- MimeFormatExtensions.cs
- UICuesEvent.cs
- TextTreeInsertUndoUnit.cs
- InstanceHandle.cs
- IndentedTextWriter.cs
- DriveInfo.cs
- TypeInfo.cs
- RequestCacheManager.cs
- ErrorEventArgs.cs
- SchemaCollectionPreprocessor.cs
- ControlTemplate.cs
- HtmlControl.cs
- InvalidPrinterException.cs
- BulletChrome.cs
- PageThemeBuildProvider.cs
- TCPClient.cs
- Point.cs
- SelectionItemProviderWrapper.cs
- PolicyValidationException.cs
- TimeoutValidationAttribute.cs
- MDIControlStrip.cs
- XmlAttribute.cs
- CookieParameter.cs
- WizardForm.cs
- ImageListStreamer.cs
- ToolTipAutomationPeer.cs
- ThreadExceptionDialog.cs
- ProtectedConfigurationSection.cs
- SQLInt32Storage.cs
- ListItemParagraph.cs
- ellipse.cs
- QueryCacheEntry.cs
- MobileUserControlDesigner.cs
- MarkedHighlightComponent.cs
- PropertyValueChangedEvent.cs
- PersonalizationProviderCollection.cs
- Context.cs
- TextRangeBase.cs
- CookieProtection.cs
- RepeaterDesigner.cs
- DbBuffer.cs
- PageContentAsyncResult.cs
- NetworkStream.cs
- control.ime.cs
- HttpCachePolicyWrapper.cs
- GridViewItemAutomationPeer.cs
- RegexStringValidatorAttribute.cs
- IOThreadTimer.cs
- ClientRuntimeConfig.cs
- DrawingContextDrawingContextWalker.cs
- MouseButton.cs
- XmlCompatibilityReader.cs