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
- InfoCardTrace.cs
- ExtendedProtectionPolicyTypeConverter.cs
- NativeMethodsOther.cs
- DataStreams.cs
- DataGridViewLinkColumn.cs
- RuntimeArgumentHandle.cs
- XPathParser.cs
- StringUtil.cs
- DataRelation.cs
- X509Utils.cs
- RichTextBoxConstants.cs
- Transform3D.cs
- AssemblyNameProxy.cs
- ContextMenuStrip.cs
- ToolStripOverflow.cs
- ItemContainerProviderWrapper.cs
- BidPrivateBase.cs
- ConstructorNeedsTagAttribute.cs
- WebPartDesigner.cs
- XamlTypeMapper.cs
- coordinatorscratchpad.cs
- SqlTriggerContext.cs
- GPRECT.cs
- PerformanceCounterCategory.cs
- FrameSecurityDescriptor.cs
- SerialErrors.cs
- AdornerHitTestResult.cs
- NameTable.cs
- TypeLibConverter.cs
- FileCodeGroup.cs
- Color.cs
- WebPartEditorCancelVerb.cs
- coordinatorfactory.cs
- LayoutDump.cs
- ObjectManager.cs
- AppearanceEditorPart.cs
- ResolveRequestResponseAsyncResult.cs
- CodeIdentifier.cs
- StorageInfo.cs
- _RequestCacheProtocol.cs
- DesignerDataSchemaClass.cs
- ScrollPatternIdentifiers.cs
- UdpUtility.cs
- SurrogateSelector.cs
- ButtonChrome.cs
- TypeDescriptor.cs
- ComplexTypeEmitter.cs
- XmlSerializationReader.cs
- BatchParser.cs
- HashSetDebugView.cs
- ButtonBase.cs
- DataGridViewColumnTypePicker.cs
- SettingsPropertyNotFoundException.cs
- HttpEncoder.cs
- HandleScope.cs
- QueryContinueDragEvent.cs
- UIElementHelper.cs
- TimeSpanValidator.cs
- MaskDesignerDialog.cs
- XD.cs
- NextPreviousPagerField.cs
- ResourceReferenceKeyNotFoundException.cs
- UnsafeNativeMethods.cs
- TrackingDataItem.cs
- AttachmentService.cs
- PolicyChain.cs
- CodeObject.cs
- X509RecipientCertificateClientElement.cs
- PointLight.cs
- FunctionQuery.cs
- XmlSchemaComplexType.cs
- UpdatePanel.cs
- CommandManager.cs
- TreeWalkHelper.cs
- SqlMethodAttribute.cs
- CodeGenerator.cs
- ITextView.cs
- NullableConverter.cs
- NativeMethods.cs
- DeviceSpecificChoice.cs
- ImageListDesigner.cs
- Win32.cs
- ManualResetEvent.cs
- CompilationSection.cs
- RequestCacheManager.cs
- SoapTransportImporter.cs
- BasicViewGenerator.cs
- PropertyCondition.cs
- ColumnTypeConverter.cs
- RevocationPoint.cs
- ImageDrawing.cs
- ILGen.cs
- FloaterBaseParaClient.cs
- ExpandCollapsePattern.cs
- WindowsListViewScroll.cs
- LayoutDump.cs
- ProxyWebPart.cs
- XmlSchemaValidationException.cs
- EventRoute.cs
- XmlNodeReader.cs