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
- ReflectEventDescriptor.cs
- ActivityTypeDesigner.xaml.cs
- ImageSource.cs
- ExpressionBuilderContext.cs
- XamlPointCollectionSerializer.cs
- DataServiceRequestOfT.cs
- IntSecurity.cs
- SecondaryViewProvider.cs
- TranslateTransform3D.cs
- cache.cs
- CheckedListBox.cs
- LineServicesRun.cs
- UrlMappingsSection.cs
- SchemaImporter.cs
- BinaryFormatter.cs
- SqlLiftWhereClauses.cs
- AnnotationHelper.cs
- _HTTPDateParse.cs
- DrawItemEvent.cs
- Msec.cs
- DiscoveryReference.cs
- StoreItemCollection.cs
- GridPattern.cs
- ArgumentOutOfRangeException.cs
- CommandField.cs
- PreparingEnlistment.cs
- DataViewManager.cs
- AssemblyResourceLoader.cs
- WpfSharedXamlSchemaContext.cs
- Calendar.cs
- QuaternionRotation3D.cs
- DataGridViewCellConverter.cs
- RequestCacheManager.cs
- SystemColors.cs
- DataGridViewUtilities.cs
- AsymmetricSignatureFormatter.cs
- RotateTransform.cs
- EntityDesignPluralizationHandler.cs
- NodeLabelEditEvent.cs
- DetailsViewPageEventArgs.cs
- InitializationEventAttribute.cs
- OciLobLocator.cs
- DataGridColumnStyleMappingNameEditor.cs
- Formatter.cs
- ToolStripDropDown.cs
- PagesSection.cs
- RouteItem.cs
- HtmlString.cs
- AmbientLight.cs
- CompareInfo.cs
- ZipFileInfoCollection.cs
- DesignerActionPropertyItem.cs
- DataStreams.cs
- ArraySortHelper.cs
- Stacktrace.cs
- Scripts.cs
- TypedServiceChannelBuilder.cs
- EntityDataSource.cs
- DocumentViewerBaseAutomationPeer.cs
- ConfigurationElement.cs
- LockedActivityGlyph.cs
- MailAddressCollection.cs
- ChameleonKey.cs
- Int16Converter.cs
- TargetConverter.cs
- DoubleIndependentAnimationStorage.cs
- TransformerInfoCollection.cs
- BulletedListEventArgs.cs
- MaterialCollection.cs
- Context.cs
- StrokeSerializer.cs
- SafePEFileHandle.cs
- ProcessHostMapPath.cs
- XmlTextWriter.cs
- TreeBuilder.cs
- ConnectionProviderAttribute.cs
- DispatchWrapper.cs
- BackEase.cs
- CultureSpecificStringDictionary.cs
- DataBinding.cs
- DSASignatureFormatter.cs
- UrlPath.cs
- WebScriptMetadataMessage.cs
- ClientFormsAuthenticationCredentials.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- UInt16Storage.cs
- ProxyWebPart.cs
- Processor.cs
- EventManager.cs
- MediaSystem.cs
- ApplicationFileParser.cs
- RequestCacheEntry.cs
- FixedTextSelectionProcessor.cs
- CroppedBitmap.cs
- Utils.cs
- AlternateView.cs
- SqlProvider.cs
- HandleCollector.cs
- PiiTraceSource.cs
- ServerValidateEventArgs.cs