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
- CompensatableSequenceActivity.cs
- LinqDataView.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- ReturnValue.cs
- FlowDocument.cs
- DefaultProfileManager.cs
- DataGridItemEventArgs.cs
- ListControl.cs
- TextTreeUndo.cs
- PrinterUnitConvert.cs
- OutputCacheModule.cs
- NonParentingControl.cs
- DataGridCommandEventArgs.cs
- DetectEofStream.cs
- WebUtility.cs
- ContextConfiguration.cs
- PersonalizationProvider.cs
- WebPartEditVerb.cs
- NativeMethods.cs
- ProtocolsConfigurationHandler.cs
- ConfigXmlSignificantWhitespace.cs
- ClientApiGenerator.cs
- TrackingAnnotationCollection.cs
- DrawingAttributeSerializer.cs
- DiagnosticEventProvider.cs
- NamespaceCollection.cs
- XPathScanner.cs
- GridViewColumnHeaderAutomationPeer.cs
- WebConfigurationHost.cs
- ProcessHostFactoryHelper.cs
- IntSecurity.cs
- DataRowView.cs
- DbConnectionInternal.cs
- Int32Animation.cs
- PathFigure.cs
- InternalMappingException.cs
- EventMappingSettingsCollection.cs
- Rule.cs
- Rules.cs
- CatalogPartChrome.cs
- ModuleBuilderData.cs
- SplitContainer.cs
- GlobalProxySelection.cs
- ToolStripItem.cs
- CookieProtection.cs
- DPAPIProtectedConfigurationProvider.cs
- GlyphsSerializer.cs
- StateItem.cs
- XmlFileEditor.cs
- TypeInfo.cs
- DuplicateWaitObjectException.cs
- EntityDataSourceContextDisposingEventArgs.cs
- MarshalByRefObject.cs
- Aggregates.cs
- Compensate.cs
- StorageRoot.cs
- CorrelationResolver.cs
- DrawListViewItemEventArgs.cs
- PerformanceCounter.cs
- UnmanagedMemoryStreamWrapper.cs
- SchemaImporterExtension.cs
- Trace.cs
- SspiSafeHandles.cs
- ScopelessEnumAttribute.cs
- ProxyWebPart.cs
- BrushConverter.cs
- ResourceSet.cs
- UnitySerializationHolder.cs
- HyperLink.cs
- MetadataExchangeClient.cs
- DbProviderConfigurationHandler.cs
- LayoutInformation.cs
- OptimizerPatterns.cs
- OutputCacheSettings.cs
- CodeMemberMethod.cs
- HitTestFilterBehavior.cs
- _ProxyRegBlob.cs
- TextSchema.cs
- Axis.cs
- FtpWebRequest.cs
- ScriptReferenceEventArgs.cs
- HttpCachePolicy.cs
- Label.cs
- XslAst.cs
- MetabaseServerConfig.cs
- DataStreamFromComStream.cs
- _Win32.cs
- HttpCachePolicy.cs
- UnsafeNetInfoNativeMethods.cs
- InputChannelAcceptor.cs
- TcpHostedTransportConfiguration.cs
- WebContext.cs
- DotNetATv1WindowsLogEntrySerializer.cs
- AttachInfo.cs
- SafePEFileHandle.cs
- DispatcherExceptionEventArgs.cs
- ArraySegment.cs
- ProfileSettingsCollection.cs
- XmlWriterSettings.cs
- FixedSOMTableCell.cs