Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- AddInStore.cs
- FaultDesigner.cs
- RSAOAEPKeyExchangeFormatter.cs
- DeriveBytes.cs
- MbpInfo.cs
- CallbackException.cs
- AssociationSetMetadata.cs
- StackOverflowException.cs
- WebPartTransformerCollection.cs
- FileLogRecordEnumerator.cs
- MarkerProperties.cs
- ToolStripComboBox.cs
- Scheduler.cs
- MetadataFile.cs
- DeliveryStrategy.cs
- Mouse.cs
- UnitySerializationHolder.cs
- XmlSchemaRedefine.cs
- ToolCreatedEventArgs.cs
- NGCPageContentSerializerAsync.cs
- DrawingAttributes.cs
- Triplet.cs
- UnsafeNativeMethodsCLR.cs
- Executor.cs
- PropertyMetadata.cs
- ADMembershipUser.cs
- ObjectDataSourceSelectingEventArgs.cs
- HttpServerUtilityBase.cs
- HelpKeywordAttribute.cs
- PermissionRequestEvidence.cs
- ResourceReferenceKeyNotFoundException.cs
- ListBindingHelper.cs
- PathFigureCollection.cs
- DecoderFallback.cs
- TheQuery.cs
- CLSCompliantAttribute.cs
- SigningCredentials.cs
- OracleNumber.cs
- ClientOptions.cs
- DataGridViewButtonCell.cs
- UrlAuthFailedErrorFormatter.cs
- Border.cs
- TreeViewImageKeyConverter.cs
- LinkedList.cs
- MemoryStream.cs
- BinaryCommonClasses.cs
- GeneralTransform3D.cs
- CustomErrorsSection.cs
- Border.cs
- FlagsAttribute.cs
- UnsafeNativeMethods.cs
- DataServiceQueryException.cs
- QuaternionAnimationBase.cs
- ToolStripRenderEventArgs.cs
- DrawingBrush.cs
- LockedAssemblyCache.cs
- XAMLParseException.cs
- KnownBoxes.cs
- SettingsPropertyWrongTypeException.cs
- DataObjectCopyingEventArgs.cs
- EqualityArray.cs
- SpotLight.cs
- XmlAttributeOverrides.cs
- EdmRelationshipRoleAttribute.cs
- ProfileParameter.cs
- EndpointDiscoveryMetadata.cs
- XmlWhitespace.cs
- GeneralTransform3D.cs
- WebChannelFactory.cs
- SqlInternalConnectionTds.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- CacheEntry.cs
- MembershipValidatePasswordEventArgs.cs
- PkcsUtils.cs
- CorrelationToken.cs
- KernelTypeValidation.cs
- AutomationPeer.cs
- FontNamesConverter.cs
- ExpressionBindingCollection.cs
- SqlDataRecord.cs
- FullTextBreakpoint.cs
- SettingsSavedEventArgs.cs
- Repeater.cs
- DataDocumentXPathNavigator.cs
- QuaternionAnimation.cs
- TextParagraph.cs
- XmlAttributeOverrides.cs
- MediaEntryAttribute.cs
- WorkflowViewService.cs
- JsonByteArrayDataContract.cs
- SafePEFileHandle.cs
- FixedHighlight.cs
- CheckBoxField.cs
- CookielessHelper.cs
- ChineseLunisolarCalendar.cs
- DbParameterCollection.cs
- Int32Animation.cs
- clipboard.cs
- CodeStatementCollection.cs
- UxThemeWrapper.cs