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
- SqlCommandSet.cs
- TypeDescriptor.cs
- ListView.cs
- hresults.cs
- TouchDevice.cs
- ModuleBuilder.cs
- WsatConfiguration.cs
- NativeMethods.cs
- Run.cs
- SymDocumentType.cs
- PrimaryKeyTypeConverter.cs
- DATA_BLOB.cs
- CellTreeSimplifier.cs
- ClientCultureInfo.cs
- SortAction.cs
- SQLMoneyStorage.cs
- ValueSerializer.cs
- RuleInfoComparer.cs
- RegexWriter.cs
- FormatConvertedBitmap.cs
- DatePickerDateValidationErrorEventArgs.cs
- GridItemCollection.cs
- DbSourceCommand.cs
- ContractListAdapter.cs
- FormViewDeleteEventArgs.cs
- TransformGroup.cs
- Double.cs
- CalendarDay.cs
- FileLogRecordEnumerator.cs
- Matrix.cs
- BrowsableAttribute.cs
- GlobalDataBindingHandler.cs
- X509Certificate2.cs
- StyleHelper.cs
- SamlAssertionKeyIdentifierClause.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- StringUtil.cs
- Parameter.cs
- DependencyPropertyKind.cs
- RIPEMD160Managed.cs
- BrowserCapabilitiesFactory.cs
- SerializationAttributes.cs
- InvocationExpression.cs
- PickBranchDesigner.xaml.cs
- Math.cs
- _TimerThread.cs
- RoleServiceManager.cs
- PenCursorManager.cs
- ListViewDataItem.cs
- CodeAttachEventStatement.cs
- NavigateEvent.cs
- SafeLibraryHandle.cs
- ClassValidator.cs
- TaskbarItemInfo.cs
- _BufferOffsetSize.cs
- DebugView.cs
- PenContexts.cs
- ImageCollectionCodeDomSerializer.cs
- HttpCachePolicyElement.cs
- SpanIndex.cs
- RelationshipSet.cs
- QilName.cs
- TimeManager.cs
- HtmlTitle.cs
- RuntimeConfigLKG.cs
- XPathDocumentNavigator.cs
- UriSectionData.cs
- GenericEnumConverter.cs
- MeasurementDCInfo.cs
- MenuTracker.cs
- messageonlyhwndwrapper.cs
- GetPageCompletedEventArgs.cs
- EntityDataSourceWrapper.cs
- StyleHelper.cs
- ValueConversionAttribute.cs
- StringDictionaryEditor.cs
- DispatcherHooks.cs
- DynamicPropertyHolder.cs
- BamlCollectionHolder.cs
- UserPreferenceChangingEventArgs.cs
- WindowsStreamSecurityBindingElement.cs
- TreeNode.cs
- _OSSOCK.cs
- PropertyKey.cs
- Sentence.cs
- ClaimSet.cs
- BamlReader.cs
- MetaType.cs
- SQLDecimalStorage.cs
- ContentPosition.cs
- ProcessThread.cs
- ElementProxy.cs
- OdbcErrorCollection.cs
- SectionUpdates.cs
- BatchWriter.cs
- XmlnsDictionary.cs
- XmlMemberMapping.cs
- DesignerTextBoxAdapter.cs
- Rotation3DKeyFrameCollection.cs
- MediaPlayer.cs