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
- TrustManagerPromptUI.cs
- MsmqReceiveHelper.cs
- NestedContainer.cs
- WasHttpModulesInstallComponent.cs
- ProfileProvider.cs
- Delegate.cs
- DeferredElementTreeState.cs
- GridLength.cs
- dtdvalidator.cs
- BinaryFormatterWriter.cs
- BlockExpression.cs
- AutoResetEvent.cs
- FixedSOMLineRanges.cs
- DataSourceControl.cs
- XmlSchemaAttribute.cs
- SqlReferenceCollection.cs
- ToolbarAUtomationPeer.cs
- Inflater.cs
- SqlXmlStorage.cs
- CacheAxisQuery.cs
- OutOfMemoryException.cs
- AddInContractAttribute.cs
- Axis.cs
- PromptStyle.cs
- AttributeProviderAttribute.cs
- CheckoutException.cs
- sqlmetadatafactory.cs
- LogLogRecordHeader.cs
- SerializationEventsCache.cs
- AuthenticationManager.cs
- MetadataCache.cs
- WhitespaceRuleReader.cs
- DeferredRunTextReference.cs
- HtmlShim.cs
- DataMisalignedException.cs
- CallId.cs
- PropertyChangedEventArgs.cs
- UriParserTemplates.cs
- TextCollapsingProperties.cs
- Error.cs
- XPathArrayIterator.cs
- cookieexception.cs
- odbcmetadatafactory.cs
- webeventbuffer.cs
- Root.cs
- WaitForChangedResult.cs
- BufferModesCollection.cs
- PathSegment.cs
- Journal.cs
- ZeroOpNode.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- PartialCachingAttribute.cs
- ImageListUtils.cs
- RequestTimeoutManager.cs
- FolderBrowserDialog.cs
- Aes.cs
- basemetadatamappingvisitor.cs
- ComponentChangingEvent.cs
- OracleEncoding.cs
- X509SecurityTokenAuthenticator.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- SchemaDeclBase.cs
- Compiler.cs
- AssemblyBuilderData.cs
- BindingSource.cs
- COM2ExtendedUITypeEditor.cs
- DataStreams.cs
- SystemNetworkInterface.cs
- COM2ExtendedTypeConverter.cs
- TemplateComponentConnector.cs
- Vars.cs
- DockPattern.cs
- WebPartVerbsEventArgs.cs
- ConfigXmlElement.cs
- DateTimeUtil.cs
- __TransparentProxy.cs
- EarlyBoundInfo.cs
- BinaryCommonClasses.cs
- MetadataLocation.cs
- WmlControlAdapter.cs
- CacheHelper.cs
- OAVariantLib.cs
- RoutedEventArgs.cs
- ResourceDictionary.cs
- GridViewUpdatedEventArgs.cs
- DataGridViewCheckBoxColumn.cs
- RoutingTable.cs
- TracePayload.cs
- CommandBindingCollection.cs
- AssemblyInfo.cs
- MaskedTextBoxDesigner.cs
- SynthesizerStateChangedEventArgs.cs
- FileStream.cs
- WizardStepBase.cs
- ObjRef.cs
- ListBindingConverter.cs
- CommentAction.cs
- TreeNodeCollectionEditor.cs
- DBCommand.cs
- PageBreakRecord.cs