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
- PropertyCollection.cs
- SecureStringHasher.cs
- ComEventsHelper.cs
- CallbackHandler.cs
- XmlToDatasetMap.cs
- CheckBoxField.cs
- COAUTHIDENTITY.cs
- RequiredFieldValidator.cs
- CacheSection.cs
- TypedServiceOperationListItem.cs
- AccessText.cs
- SocketAddress.cs
- WSMessageEncoding.cs
- ConnectionStringSettings.cs
- AnimationStorage.cs
- SingleAnimationUsingKeyFrames.cs
- TextViewBase.cs
- ProviderConnectionPoint.cs
- shaperfactoryquerycacheentry.cs
- TaskHelper.cs
- WeakReferenceList.cs
- MultipleCopiesCollection.cs
- TextSelectionHighlightLayer.cs
- Trigger.cs
- XmlLoader.cs
- AsyncDataRequest.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- OdbcErrorCollection.cs
- ProcessThread.cs
- DetailsViewRow.cs
- FixedBufferAttribute.cs
- ApplicationId.cs
- InstanceKeyView.cs
- IsolatedStorageFileStream.cs
- ImageFormat.cs
- FixedNode.cs
- TypeDescriptorContext.cs
- Simplifier.cs
- RenamedEventArgs.cs
- TextServicesLoader.cs
- StyleXamlParser.cs
- WsrmTraceRecord.cs
- DataGridItemCollection.cs
- FormView.cs
- EntityTemplateFactory.cs
- DeadCharTextComposition.cs
- RequestCache.cs
- WizardForm.cs
- IgnoreFlushAndCloseStream.cs
- WmpBitmapEncoder.cs
- MembershipValidatePasswordEventArgs.cs
- EdmError.cs
- PaperSource.cs
- StretchValidation.cs
- TransformDescriptor.cs
- UserPersonalizationStateInfo.cs
- LogSwitch.cs
- PartialCachingControl.cs
- ProfileWorkflowElement.cs
- Fonts.cs
- ApplicationBuildProvider.cs
- StylusPlugin.cs
- CacheDependency.cs
- CodeTypeReferenceExpression.cs
- DBBindings.cs
- Matrix.cs
- PageOutputColor.cs
- KeyProperty.cs
- XmlParserContext.cs
- TimersDescriptionAttribute.cs
- PermissionAttributes.cs
- SafeHandles.cs
- UpdateException.cs
- OleDbEnumerator.cs
- DefaultAsyncDataDispatcher.cs
- CroppedBitmap.cs
- CutCopyPasteHelper.cs
- DoubleIndependentAnimationStorage.cs
- LineGeometry.cs
- XmlLoader.cs
- AutomationAttributeInfo.cs
- HealthMonitoringSectionHelper.cs
- TokenBasedSet.cs
- NodeInfo.cs
- TrackingProfile.cs
- Button.cs
- FilterElement.cs
- ColumnWidthChangingEvent.cs
- SqlTypesSchemaImporter.cs
- SoapSchemaMember.cs
- EmptyTextWriter.cs
- AsymmetricCryptoHandle.cs
- _BufferOffsetSize.cs
- ExecutionEngineException.cs
- Latin1Encoding.cs
- QueryBranchOp.cs
- KeyValueSerializer.cs
- CallContext.cs
- CalculatedColumn.cs
- _ProxyRegBlob.cs