Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- ObjectDataSourceFilteringEventArgs.cs
- HwndMouseInputProvider.cs
- CapabilitiesSection.cs
- MembershipAdapter.cs
- XmlQualifiedNameTest.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- MinimizableAttributeTypeConverter.cs
- SafeNativeMethods.cs
- JapaneseCalendar.cs
- DecoderReplacementFallback.cs
- InstalledVoice.cs
- MemberCollection.cs
- HwndSource.cs
- WinFormsUtils.cs
- LogFlushAsyncResult.cs
- SqlServer2KCompatibilityAnnotation.cs
- BamlRecordWriter.cs
- WriteFileContext.cs
- ObjectTag.cs
- SiteMap.cs
- HwndHost.cs
- GridViewCommandEventArgs.cs
- InfoCardSymmetricAlgorithm.cs
- WindowsSlider.cs
- TemplateEditingService.cs
- XmlAnyElementAttribute.cs
- HttpCachePolicyBase.cs
- DragCompletedEventArgs.cs
- MessagePartDescription.cs
- VideoDrawing.cs
- ObjectQueryProvider.cs
- SqlInternalConnectionSmi.cs
- PeerNameResolver.cs
- PointCollectionConverter.cs
- DomainUpDown.cs
- ListViewDeleteEventArgs.cs
- SafeNativeMethodsMilCoreApi.cs
- MethodCallTranslator.cs
- ClientType.cs
- InputManager.cs
- XmlAttributes.cs
- _ListenerRequestStream.cs
- WebPartConnectVerb.cs
- XmlIgnoreAttribute.cs
- AssemblyNameProxy.cs
- MiniLockedBorderGlyph.cs
- PagesChangedEventArgs.cs
- CopyAction.cs
- DockPanel.cs
- CompositeFontInfo.cs
- ReferentialConstraint.cs
- SmiConnection.cs
- ListBase.cs
- WmlValidatorAdapter.cs
- XmlImplementation.cs
- FamilyTypefaceCollection.cs
- KnownBoxes.cs
- StringDictionaryEditor.cs
- Line.cs
- MultiTrigger.cs
- IntranetCredentialPolicy.cs
- SystemKeyConverter.cs
- ObjectDataSourceMethodEventArgs.cs
- ProtectedProviderSettings.cs
- XmlDocumentSchema.cs
- IndexingContentUnit.cs
- FormViewPagerRow.cs
- NominalTypeEliminator.cs
- XmlAutoDetectWriter.cs
- Timer.cs
- ObjectDataSource.cs
- Form.cs
- ActivationWorker.cs
- ServicePoint.cs
- NamedPipeDuplicateContext.cs
- AssemblyBuilder.cs
- FilteredReadOnlyMetadataCollection.cs
- FontConverter.cs
- prompt.cs
- RepeaterItem.cs
- WebPartEditorOkVerb.cs
- ProviderUtil.cs
- PropertyEmitterBase.cs
- XmlSchemaGroupRef.cs
- XamlFrame.cs
- C14NUtil.cs
- BitmapEffectGroup.cs
- QuarticEase.cs
- Base64Encoder.cs
- ZipIOExtraFieldPaddingElement.cs
- CalculatedColumn.cs
- WebPartMinimizeVerb.cs
- ServiceNameElement.cs
- TdsParameterSetter.cs
- BaseUriHelper.cs
- NativeMethods.cs
- Int32CAMarshaler.cs
- EntityConnectionStringBuilder.cs
- CalendarBlackoutDatesCollection.cs
- EntityDataSourceValidationException.cs