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
- TypefaceMetricsCache.cs
- SafeRegistryKey.cs
- DetailsViewUpdateEventArgs.cs
- SessionStateUtil.cs
- EnumerableWrapperWeakToStrong.cs
- XmlSchemaImport.cs
- PackagingUtilities.cs
- ResetableIterator.cs
- DispatcherHookEventArgs.cs
- DataGridViewCheckBoxColumn.cs
- LinqToSqlWrapper.cs
- ErrorFormatterPage.cs
- XmlMtomReader.cs
- KeyedCollection.cs
- ProtocolElementCollection.cs
- ProgressPage.cs
- QuotedPairReader.cs
- PersistChildrenAttribute.cs
- ProfileSection.cs
- TemplatedWizardStep.cs
- DataViewSettingCollection.cs
- WindowsProgressbar.cs
- Preprocessor.cs
- _RequestCacheProtocol.cs
- ObjectTag.cs
- FixUpCollection.cs
- EventSinkHelperWriter.cs
- StringWriter.cs
- EventProvider.cs
- RegexMatchCollection.cs
- Properties.cs
- SplashScreenNativeMethods.cs
- SiteMapProvider.cs
- ComponentRenameEvent.cs
- GestureRecognizer.cs
- RegexEditorDialog.cs
- CodeTypeParameterCollection.cs
- BrowserCapabilitiesFactoryBase.cs
- DecoderExceptionFallback.cs
- IdnMapping.cs
- WebScriptEnablingElement.cs
- MasterPageCodeDomTreeGenerator.cs
- ReadOnlyHierarchicalDataSourceView.cs
- Rectangle.cs
- IgnoreFlushAndCloseStream.cs
- TypedTableBaseExtensions.cs
- SystemFonts.cs
- InkSerializer.cs
- CodeCommentStatement.cs
- SimpleWorkerRequest.cs
- _NtlmClient.cs
- PhysicalOps.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- FontSourceCollection.cs
- StringDictionary.cs
- CssTextWriter.cs
- ImagingCache.cs
- SqlConnectionHelper.cs
- WebPartConnection.cs
- TreeNodeCollection.cs
- ChildDocumentBlock.cs
- Win32MouseDevice.cs
- XamlFigureLengthSerializer.cs
- TextEffect.cs
- ObfuscateAssemblyAttribute.cs
- DeclaredTypeElementCollection.cs
- FontFamilyConverter.cs
- HScrollProperties.cs
- AddInToken.cs
- SQLRoleProvider.cs
- AlphabeticalEnumConverter.cs
- DSACryptoServiceProvider.cs
- CannotUnloadAppDomainException.cs
- InvalidCastException.cs
- GroupBox.cs
- MarkupProperty.cs
- CommandLineParser.cs
- BitmapPalettes.cs
- WebPartsPersonalization.cs
- NativeCompoundFileAPIs.cs
- WaitHandleCannotBeOpenedException.cs
- SafeRightsManagementPubHandle.cs
- StylusEditingBehavior.cs
- NoneExcludedImageIndexConverter.cs
- QueryableFilterRepeater.cs
- DataSourceProvider.cs
- PkcsMisc.cs
- HTMLTagNameToTypeMapper.cs
- ButtonField.cs
- ConfigXmlAttribute.cs
- ResourceWriter.cs
- SoapBinding.cs
- CodeAccessPermission.cs
- ScriptResourceMapping.cs
- SystemResourceHost.cs
- WsatConfiguration.cs
- WindowsTooltip.cs
- Panel.cs
- UnionExpr.cs
- ComponentTray.cs