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
- LogicalChannel.cs
- ListBox.cs
- FixedSOMPageConstructor.cs
- ImageProxy.cs
- MdImport.cs
- _FtpControlStream.cs
- CancellationState.cs
- NamedObject.cs
- wgx_commands.cs
- TypeElement.cs
- PersonalizationState.cs
- RoleGroup.cs
- RawUIStateInputReport.cs
- GregorianCalendarHelper.cs
- WebPartEditVerb.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- RectangleConverter.cs
- Resources.Designer.cs
- OdbcFactory.cs
- OutputCache.cs
- AsyncPostBackTrigger.cs
- SelectionPatternIdentifiers.cs
- DesignerTextViewAdapter.cs
- AuthenticationModuleElement.cs
- WebPartZone.cs
- DateTimePicker.cs
- MaskInputRejectedEventArgs.cs
- SQLBinaryStorage.cs
- RenderDataDrawingContext.cs
- RtfControlWordInfo.cs
- XamlReader.cs
- InfoCardSchemas.cs
- EnumBuilder.cs
- CustomErrorsSectionWrapper.cs
- HwndHost.cs
- DataTable.cs
- CodeCompiler.cs
- AudioFormatConverter.cs
- StylusDevice.cs
- ToolStripDropDownMenu.cs
- WebPartMenu.cs
- ListBox.cs
- ToolStripContentPanel.cs
- WebPartAddingEventArgs.cs
- RemotingConfigParser.cs
- SqlRemoveConstantOrderBy.cs
- InterleavedZipPartStream.cs
- SignatureHelper.cs
- FtpWebResponse.cs
- Literal.cs
- SplitterDesigner.cs
- AssemblyCollection.cs
- WindowsRichEdit.cs
- DeviceContexts.cs
- SafeEventLogWriteHandle.cs
- basecomparevalidator.cs
- HtmlButton.cs
- Merger.cs
- IdentityModelDictionary.cs
- WsdlInspector.cs
- PropertyConverter.cs
- EditorPart.cs
- CapabilitiesRule.cs
- SqlTypeSystemProvider.cs
- BindingExpression.cs
- HtmlSelect.cs
- TextSegment.cs
- ObjectDataSourceMethodEditor.cs
- XmlReaderDelegator.cs
- FileSystemInfo.cs
- HwndSubclass.cs
- Column.cs
- StorageEntitySetMapping.cs
- FactoryGenerator.cs
- CodeDirectoryCompiler.cs
- SEHException.cs
- ProfileProvider.cs
- OleDbConnectionFactory.cs
- Hex.cs
- PublisherMembershipCondition.cs
- InvalidCastException.cs
- DbConnectionPoolGroup.cs
- DataGridColumn.cs
- DbProviderSpecificTypePropertyAttribute.cs
- InheritanceAttribute.cs
- X509Certificate.cs
- TreeNode.cs
- EtwTrace.cs
- DataBoundLiteralControl.cs
- MatrixCamera.cs
- RegexWriter.cs
- ScrollBar.cs
- DefaultProxySection.cs
- OleDbFactory.cs
- XmlSchemaSimpleTypeUnion.cs
- ZipIOExtraField.cs
- UpdateTracker.cs
- ToolStripKeyboardHandlingService.cs
- NotifyInputEventArgs.cs
- ComponentChangingEvent.cs