Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- GroupItem.cs
- XmlElementList.cs
- ClientRequest.cs
- TextDataBindingHandler.cs
- InfoCardTraceRecord.cs
- SchemaReference.cs
- SiteIdentityPermission.cs
- DataGridViewTextBoxEditingControl.cs
- LongValidatorAttribute.cs
- HwndTarget.cs
- CompressEmulationStream.cs
- SqlNodeTypeOperators.cs
- HttpMethodConstraint.cs
- UserInitiatedNavigationPermission.cs
- PaintValueEventArgs.cs
- FunctionParameter.cs
- DataGridHyperlinkColumn.cs
- TextElementEnumerator.cs
- UserControlCodeDomTreeGenerator.cs
- Metadata.cs
- ProviderBase.cs
- ChildDocumentBlock.cs
- StringStorage.cs
- BitmapCodecInfoInternal.cs
- OrderedDictionary.cs
- ButtonBaseAdapter.cs
- PasswordDeriveBytes.cs
- NamedElement.cs
- CustomError.cs
- SelectionProviderWrapper.cs
- XPathChildIterator.cs
- XhtmlBasicLabelAdapter.cs
- DataGridColumn.cs
- TreeNodeClickEventArgs.cs
- ButtonChrome.cs
- SessionKeyExpiredException.cs
- TextDecorationCollection.cs
- _IPv4Address.cs
- WindowsIPAddress.cs
- DelegateTypeInfo.cs
- EventTask.cs
- ModuleConfigurationInfo.cs
- BamlTreeMap.cs
- GradientSpreadMethodValidation.cs
- GZipDecoder.cs
- GenericTypeParameterBuilder.cs
- SiteMapNodeItem.cs
- CatalogPart.cs
- CqlGenerator.cs
- ConnectionStringSettingsCollection.cs
- LinearGradientBrush.cs
- MsmqInputSessionChannelListener.cs
- DataSetUtil.cs
- documentation.cs
- precedingsibling.cs
- OdbcRowUpdatingEvent.cs
- RuleInfoComparer.cs
- InputScopeNameConverter.cs
- StylusSystemGestureEventArgs.cs
- HashMembershipCondition.cs
- Int64.cs
- TransactionalPackage.cs
- HttpWebRequest.cs
- XPathDescendantIterator.cs
- URI.cs
- Console.cs
- SafeFileMappingHandle.cs
- Point.cs
- HostingEnvironmentSection.cs
- DataGridRowsPresenter.cs
- FolderLevelBuildProvider.cs
- NullableConverter.cs
- ValueSerializer.cs
- SuppressIldasmAttribute.cs
- TraceProvider.cs
- BamlWriter.cs
- Schema.cs
- MessagePartProtectionMode.cs
- GeneralTransformCollection.cs
- DbDataRecord.cs
- SqlUtil.cs
- XmlRawWriter.cs
- ImageAutomationPeer.cs
- InvalidWMPVersionException.cs
- CookielessHelper.cs
- DictionarySectionHandler.cs
- DocumentViewer.cs
- MergePropertyDescriptor.cs
- ErrorStyle.cs
- BaseDataListDesigner.cs
- ObjectHelper.cs
- Bidi.cs
- UInt64.cs
- InvokeMethodDesigner.xaml.cs
- loginstatus.cs
- RecommendedAsConfigurableAttribute.cs
- CallbackValidatorAttribute.cs
- SourceInterpreter.cs
- HoistedLocals.cs
- TPLETWProvider.cs