Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / 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 : [....] - 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CollectionViewSource.cs
- PrimitiveSchema.cs
- RootBrowserWindow.cs
- SchemaNames.cs
- CustomLineCap.cs
- DataGridAutoFormatDialog.cs
- XmlAnyElementAttribute.cs
- AnonymousIdentificationModule.cs
- InternalControlCollection.cs
- StickyNoteAnnotations.cs
- XmlName.cs
- ImageFormatConverter.cs
- DataGridViewRow.cs
- DynamicActivityTypeDescriptor.cs
- BlurBitmapEffect.cs
- DeclaredTypeValidatorAttribute.cs
- FileCodeGroup.cs
- CommandValueSerializer.cs
- SoapExtensionTypeElementCollection.cs
- UIElement3DAutomationPeer.cs
- MergeEnumerator.cs
- CompatibleIComparer.cs
- CompileLiteralTextParser.cs
- OleDbFactory.cs
- GenericAuthenticationEventArgs.cs
- Receive.cs
- GregorianCalendarHelper.cs
- InstanceNormalEvent.cs
- DataGridViewRowsRemovedEventArgs.cs
- NameSpaceExtractor.cs
- HtmlInputPassword.cs
- Helper.cs
- FormatPage.cs
- DebugControllerThread.cs
- ObjectViewEntityCollectionData.cs
- StateRuntime.cs
- SendMailErrorEventArgs.cs
- BatchServiceHost.cs
- NameValuePermission.cs
- Classification.cs
- CAGDesigner.cs
- GraphicsPath.cs
- ReturnValue.cs
- Schema.cs
- TransactionProtocolConverter.cs
- Descriptor.cs
- Drawing.cs
- SynchronizedInputAdaptor.cs
- MenuItemBindingCollection.cs
- ZoneButton.cs
- WorkflowClientDeliverMessageWrapper.cs
- AttributeEmitter.cs
- validationstate.cs
- CodeAccessSecurityEngine.cs
- Int16Animation.cs
- SchemaElementDecl.cs
- BaseCodeDomTreeGenerator.cs
- TypeHelpers.cs
- Expression.cs
- GridViewAutomationPeer.cs
- MediaSystem.cs
- MetadataCache.cs
- QueueProcessor.cs
- EdmToObjectNamespaceMap.cs
- FixedSOMContainer.cs
- ProgressiveCrcCalculatingStream.cs
- MailMessageEventArgs.cs
- BuildProvidersCompiler.cs
- wgx_render.cs
- MetadataPropertyvalue.cs
- MruCache.cs
- SiteIdentityPermission.cs
- DataSourceXmlAttributeAttribute.cs
- InstancePersistenceContext.cs
- TransactionManager.cs
- NativeMethodsOther.cs
- TemplatePartAttribute.cs
- LinearGradientBrush.cs
- HttpStreams.cs
- DataGridLinkButton.cs
- AppSettingsExpressionBuilder.cs
- RegexBoyerMoore.cs
- LinkArea.cs
- FullTrustAssemblyCollection.cs
- SetIterators.cs
- CustomErrorsSectionWrapper.cs
- FilePresentation.cs
- FileDialog.cs
- AsymmetricKeyExchangeFormatter.cs
- AnchoredBlock.cs
- StrokeNodeData.cs
- RadioButtonAutomationPeer.cs
- IgnoreSectionHandler.cs
- StackSpiller.cs
- BitConverter.cs
- ToolboxItemFilterAttribute.cs
- RequestCachePolicy.cs
- SectionInformation.cs
- RootDesignerSerializerAttribute.cs
- TextTreeExtractElementUndoUnit.cs