Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media / DrawingServices.cs / 1305600 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RemotingServices.cs
- Column.cs
- RectangleGeometry.cs
- ConnectionPoint.cs
- PocoEntityKeyStrategy.cs
- AggregateNode.cs
- ServiceModelPerformanceCounters.cs
- DependencyPropertyKind.cs
- DateTimeFormat.cs
- DictionarySectionHandler.cs
- SQLStringStorage.cs
- DesignerAutoFormat.cs
- CreateParams.cs
- HighlightComponent.cs
- SqlDataSourceCommandEventArgs.cs
- LinearGradientBrush.cs
- pingexception.cs
- Menu.cs
- _ConnectOverlappedAsyncResult.cs
- TimeoutException.cs
- StyleHelper.cs
- ObjectStateManager.cs
- EntityConnectionStringBuilder.cs
- CodeSnippetExpression.cs
- basevalidator.cs
- SchemaElementDecl.cs
- DataServiceQuery.cs
- OpenFileDialog.cs
- RichTextBoxAutomationPeer.cs
- VisualBasicSettingsHandler.cs
- ToolStripLabel.cs
- XmlReflectionImporter.cs
- KeyTimeConverter.cs
- LinkDescriptor.cs
- PropertyEmitter.cs
- ChannelCacheDefaults.cs
- TextSelectionProcessor.cs
- ByteKeyFrameCollection.cs
- EventListener.cs
- Color.cs
- XmlSchemaDocumentation.cs
- MailDefinition.cs
- TreeViewImageIndexConverter.cs
- RegexCaptureCollection.cs
- ColorContext.cs
- ExchangeUtilities.cs
- NumberFunctions.cs
- TextBox.cs
- ObjectCloneHelper.cs
- WebPartConnectionsCloseVerb.cs
- CachedFontFace.cs
- Accessors.cs
- LeaseManager.cs
- sqlcontext.cs
- returneventsaver.cs
- RadioButtonBaseAdapter.cs
- GridViewSortEventArgs.cs
- DetailsViewPageEventArgs.cs
- ScriptReference.cs
- MultiBinding.cs
- CacheSection.cs
- SecurityContext.cs
- RsaSecurityTokenAuthenticator.cs
- InputGestureCollection.cs
- CompilerTypeWithParams.cs
- DataBindingList.cs
- CrossAppDomainChannel.cs
- PresentationAppDomainManager.cs
- ProfessionalColorTable.cs
- PathGeometry.cs
- StructuralObject.cs
- IConvertible.cs
- ContainerParaClient.cs
- StringSource.cs
- SafeNativeMemoryHandle.cs
- ExpressionBuilder.cs
- ButtonPopupAdapter.cs
- DataGridSortCommandEventArgs.cs
- NegotiateStream.cs
- DeferredReference.cs
- RoleGroupCollection.cs
- IsolatedStorageFilePermission.cs
- SocketPermission.cs
- Separator.cs
- Utils.cs
- SqlDataAdapter.cs
- CodeGroup.cs
- PropertyFilterAttribute.cs
- FormClosedEvent.cs
- DataMember.cs
- StringReader.cs
- WebPartsSection.cs
- WorkflowOwnerAsyncResult.cs
- MemberDescriptor.cs
- EditorBrowsableAttribute.cs
- ServiceInfo.cs
- EventData.cs
- PolyLineSegmentFigureLogic.cs
- GestureRecognizer.cs
- IdnElement.cs