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
- MarshalByRefObject.cs
- Msec.cs
- TabOrder.cs
- IncrementalReadDecoders.cs
- ChangeNode.cs
- CombinedTcpChannel.cs
- ScriptResourceInfo.cs
- HttpCacheParams.cs
- CustomAttribute.cs
- DomNameTable.cs
- BrushMappingModeValidation.cs
- MediaSystem.cs
- TextServicesProperty.cs
- Switch.cs
- BindingManagerDataErrorEventArgs.cs
- InputLanguageEventArgs.cs
- PersonalizationEntry.cs
- ClientBuildManager.cs
- ResourceExpressionBuilder.cs
- RegexGroup.cs
- DataBindingCollection.cs
- EventSinkHelperWriter.cs
- BrowserTree.cs
- DefaultProxySection.cs
- EventPropertyMap.cs
- CompareValidator.cs
- ToolStripManager.cs
- SID.cs
- ProtectedProviderSettings.cs
- ClientSection.cs
- WorkBatch.cs
- ErasingStroke.cs
- ScopelessEnumAttribute.cs
- XsdBuilder.cs
- FlowDocumentView.cs
- SqlProfileProvider.cs
- PathSegmentCollection.cs
- XmlAttribute.cs
- MergePropertyDescriptor.cs
- SqlDataRecord.cs
- BrowserDefinition.cs
- Int32RectValueSerializer.cs
- SchemaImporterExtensionElementCollection.cs
- CacheHelper.cs
- Win32Exception.cs
- CreatingCookieEventArgs.cs
- MembershipValidatePasswordEventArgs.cs
- GenericPrincipal.cs
- ResetableIterator.cs
- FileSystemEventArgs.cs
- ValidationSummary.cs
- TraceContextRecord.cs
- SqlGenericUtil.cs
- ApplicationException.cs
- SoapIgnoreAttribute.cs
- CellParaClient.cs
- ExtensionSimplifierMarkupObject.cs
- SelectionItemPattern.cs
- StylusCaptureWithinProperty.cs
- Point4DConverter.cs
- Empty.cs
- CqlBlock.cs
- AuthenticationServiceManager.cs
- TreeViewItemAutomationPeer.cs
- CompilerScope.Storage.cs
- ToolStripItemImageRenderEventArgs.cs
- WeakHashtable.cs
- ToolboxComponentsCreatingEventArgs.cs
- X509CertificateStore.cs
- Boolean.cs
- DataKeyArray.cs
- CodeGenerator.cs
- XmlSchemas.cs
- ValidatingCollection.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- HideDisabledControlAdapter.cs
- ChineseLunisolarCalendar.cs
- HttpProfileGroupBase.cs
- TransformerInfo.cs
- ZeroOpNode.cs
- TaskFactory.cs
- TableLayoutPanel.cs
- WebRequestModuleElement.cs
- SHA1.cs
- MeasureItemEvent.cs
- ToolBarOverflowPanel.cs
- GPPOINT.cs
- FixedSOMPageElement.cs
- MimeXmlReflector.cs
- LocalizationComments.cs
- TextPatternIdentifiers.cs
- FixedSchema.cs
- ToolStripManager.cs
- DictionaryKeyPropertyAttribute.cs
- TreeNodeStyleCollection.cs
- GeneratedView.cs
- FloaterParagraph.cs
- VisualTransition.cs
- Int16AnimationBase.cs