Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- CounterCreationDataCollection.cs
- httpserverutility.cs
- ListViewInsertedEventArgs.cs
- CompletionBookmark.cs
- EventHandlerService.cs
- EnumType.cs
- Accessible.cs
- IUnknownConstantAttribute.cs
- SecureConversationDriver.cs
- EnumerableWrapperWeakToStrong.cs
- ObsoleteAttribute.cs
- SafeViewOfFileHandle.cs
- XPathSelfQuery.cs
- VarInfo.cs
- securitymgrsite.cs
- COM2Properties.cs
- ToolStripContainerDesigner.cs
- WrapPanel.cs
- WebBrowserDesigner.cs
- ListDictionary.cs
- TextClipboardData.cs
- DebugView.cs
- HierarchicalDataBoundControl.cs
- URI.cs
- clipboard.cs
- XmlSchemaSimpleContentExtension.cs
- GZipObjectSerializer.cs
- SqlHelper.cs
- SelectingProviderEventArgs.cs
- RegexMatchCollection.cs
- ClientSettingsProvider.cs
- WindowsPen.cs
- CultureInfo.cs
- AggregateException.cs
- ZoneButton.cs
- TaskFileService.cs
- RegistrySecurity.cs
- MatrixTransform.cs
- DataSetUtil.cs
- HitTestDrawingContextWalker.cs
- XamlToRtfWriter.cs
- CustomCredentialPolicy.cs
- TableDetailsCollection.cs
- PersonalizablePropertyEntry.cs
- contentDescriptor.cs
- HostingEnvironment.cs
- PerformanceCounter.cs
- RTLAwareMessageBox.cs
- StorageAssociationSetMapping.cs
- TypedReference.cs
- AutomationIdentifierGuids.cs
- CustomSignedXml.cs
- SerializationObjectManager.cs
- WebZone.cs
- DefaultAsyncDataDispatcher.cs
- XamlWriterExtensions.cs
- VarRemapper.cs
- LassoSelectionBehavior.cs
- TransformerInfo.cs
- TextViewBase.cs
- Section.cs
- DataIdProcessor.cs
- RelatedView.cs
- ToolStripSettings.cs
- TypedReference.cs
- SpellerHighlightLayer.cs
- ClockController.cs
- ByteConverter.cs
- URIFormatException.cs
- ScriptResourceInfo.cs
- DelegateArgumentReference.cs
- PreviewPrintController.cs
- ActivityTypeResolver.xaml.cs
- DesignerCategoryAttribute.cs
- LoadGrammarCompletedEventArgs.cs
- MexTcpBindingElement.cs
- URLIdentityPermission.cs
- SqlDependencyListener.cs
- GridEntry.cs
- RecordBuilder.cs
- ValidateNames.cs
- SBCSCodePageEncoding.cs
- AspNetSynchronizationContext.cs
- Graphics.cs
- DataListItemCollection.cs
- TimeStampChecker.cs
- ClassHandlersStore.cs
- FunctionDetailsReader.cs
- RC2.cs
- Timer.cs
- InkPresenter.cs
- ViewGenerator.cs
- XmlIlGenerator.cs
- serverconfig.cs
- DataSourceControlBuilder.cs
- Roles.cs
- SoapMessage.cs
- VisualTarget.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- ParameterBuilder.cs