Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / 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 : [....] - 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DbDataSourceEnumerator.cs
- EnvelopedPkcs7.cs
- DataSetMappper.cs
- ConfigurationSectionGroup.cs
- EventDescriptor.cs
- diagnosticsswitches.cs
- WindowsListViewSubItem.cs
- Util.cs
- IODescriptionAttribute.cs
- ReturnValue.cs
- Constraint.cs
- FreezableDefaultValueFactory.cs
- BinaryObjectInfo.cs
- ObfuscationAttribute.cs
- ScrollEvent.cs
- Pkcs7Recipient.cs
- CalendarDateRangeChangingEventArgs.cs
- Thread.cs
- DataGridViewMethods.cs
- InputScopeAttribute.cs
- OdbcPermission.cs
- Utils.cs
- AnonymousIdentificationSection.cs
- MDIClient.cs
- ToolBarOverflowPanel.cs
- SafeThreadHandle.cs
- BooleanFunctions.cs
- RuntimeEnvironment.cs
- ExpressionEditorAttribute.cs
- TypePropertyEditor.cs
- PixelFormats.cs
- FontFaceLayoutInfo.cs
- ViewStateException.cs
- Message.cs
- DbExpressionVisitor_TResultType.cs
- TextRange.cs
- CollectionChange.cs
- CodeGen.cs
- SiteMapNodeCollection.cs
- DocumentSchemaValidator.cs
- RowVisual.cs
- CrossContextChannel.cs
- UncommonField.cs
- FormatSettings.cs
- TabRenderer.cs
- FormViewDeleteEventArgs.cs
- RootBuilder.cs
- SmtpReplyReaderFactory.cs
- WebPartVerbCollection.cs
- ExpressionPrinter.cs
- CodeNamespaceCollection.cs
- SqlDataReader.cs
- MD5HashHelper.cs
- Control.cs
- UrlPath.cs
- QueryableFilterUserControl.cs
- UriExt.cs
- AstTree.cs
- ChangeProcessor.cs
- UrlMapping.cs
- PropertySourceInfo.cs
- DataPagerFieldCollection.cs
- StatusBarItemAutomationPeer.cs
- DefaultCompensation.cs
- OleStrCAMarshaler.cs
- CompilerScopeManager.cs
- SqlMethods.cs
- CalendarDateRange.cs
- ToolStripRenderer.cs
- SkipStoryboardToFill.cs
- AnnouncementDispatcherAsyncResult.cs
- DataGridViewRowContextMenuStripNeededEventArgs.cs
- XhtmlConformanceSection.cs
- RequestUriProcessor.cs
- ThreadLocal.cs
- StandardBindingImporter.cs
- EntityDataSourceContainerNameConverter.cs
- FrameworkReadOnlyPropertyMetadata.cs
- TextFormatterContext.cs
- WpfKnownType.cs
- OutputCacheSection.cs
- ScriptControlDescriptor.cs
- EntryWrittenEventArgs.cs
- FlagsAttribute.cs
- RestClientProxyHandler.cs
- WebZone.cs
- webproxy.cs
- DPAPIProtectedConfigurationProvider.cs
- PageBuildProvider.cs
- DesignerVerbCollection.cs
- OdbcConnectionFactory.cs
- FormClosingEvent.cs
- DateTimeAutomationPeer.cs
- AttachInfo.cs
- AttributeQuery.cs
- StreamWithDictionary.cs
- ActivityContext.cs
- DiagnosticsConfiguration.cs
- Invariant.cs
- CodeStatement.cs