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
- ContentElement.cs
- ISAPIRuntime.cs
- RtfToXamlReader.cs
- Win32KeyboardDevice.cs
- ColorTypeConverter.cs
- UnauthorizedAccessException.cs
- FileSecurity.cs
- InternalDispatchObject.cs
- TextBoxLine.cs
- XmlSerializationGeneratedCode.cs
- ListBindableAttribute.cs
- RepeatButtonAutomationPeer.cs
- DrawingBrush.cs
- DropShadowBitmapEffect.cs
- MappingModelBuildProvider.cs
- MultiSelector.cs
- ConnectionConsumerAttribute.cs
- RegisteredScript.cs
- ObjectPropertyMapping.cs
- UserControlParser.cs
- InkCanvas.cs
- ThrowHelper.cs
- CompilerParameters.cs
- Pair.cs
- Utils.cs
- PathSegmentCollection.cs
- StreamInfo.cs
- CollectionConverter.cs
- HandlerFactoryWrapper.cs
- WebPartZoneBase.cs
- TraceSwitch.cs
- SelectionEditingBehavior.cs
- XmlSchemaSimpleType.cs
- ContractMapping.cs
- EntityModelSchemaGenerator.cs
- DoubleCollection.cs
- ImageButton.cs
- DocComment.cs
- XsdDuration.cs
- XPathEmptyIterator.cs
- TextFormatterHost.cs
- WindowsProgressbar.cs
- ReflectionUtil.cs
- XmlSignatureManifest.cs
- MeshGeometry3D.cs
- DataList.cs
- ObjectViewEntityCollectionData.cs
- StringUtil.cs
- ViewManager.cs
- ScrollEvent.cs
- Int16KeyFrameCollection.cs
- SHA1.cs
- EntityDesignPluralizationHandler.cs
- RegexReplacement.cs
- ObjectAssociationEndMapping.cs
- ItemDragEvent.cs
- HtmlPanelAdapter.cs
- InvalidateEvent.cs
- CompoundFileDeflateTransform.cs
- Image.cs
- SponsorHelper.cs
- CompilerState.cs
- UriSection.cs
- SafeTokenHandle.cs
- IndentTextWriter.cs
- WebDisplayNameAttribute.cs
- HtmlCommandAdapter.cs
- Error.cs
- ConfigurationSectionCollection.cs
- Utilities.cs
- OptimizedTemplateContentHelper.cs
- ConversionContext.cs
- ContractUtils.cs
- DataChangedEventManager.cs
- Enum.cs
- VectorConverter.cs
- HexParser.cs
- JpegBitmapDecoder.cs
- XhtmlBasicCalendarAdapter.cs
- SetterBaseCollection.cs
- SqlUtil.cs
- PriorityBinding.cs
- DataGridAutomationPeer.cs
- Parallel.cs
- MiniMapControl.xaml.cs
- IPEndPointCollection.cs
- SessionState.cs
- CurrencyWrapper.cs
- HostingEnvironment.cs
- DataListCommandEventArgs.cs
- TextAutomationPeer.cs
- OperationInvokerBehavior.cs
- HiddenFieldPageStatePersister.cs
- XmlTextReaderImpl.cs
- TraceInternal.cs
- StringUtil.cs
- FlowDocumentReader.cs
- DragDrop.cs
- ZoneIdentityPermission.cs
- Reference.cs