Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- TimelineClockCollection.cs
- RepeatBehaviorConverter.cs
- AdornedElementPlaceholder.cs
- DLinqDataModelProvider.cs
- FormsAuthentication.cs
- WebPermission.cs
- CodeAssignStatement.cs
- HtmlGenericControl.cs
- TargetParameterCountException.cs
- DragEvent.cs
- Int32RectValueSerializer.cs
- WmfPlaceableFileHeader.cs
- TabOrder.cs
- WebSysDescriptionAttribute.cs
- DynamicMethod.cs
- GACMembershipCondition.cs
- AlphabeticalEnumConverter.cs
- DefaultPropertyAttribute.cs
- KeyGestureValueSerializer.cs
- WebServiceData.cs
- GestureRecognitionResult.cs
- EnumMember.cs
- VisualCollection.cs
- EtwTrace.cs
- BuildProvider.cs
- MenuCommands.cs
- SafeNativeMethods.cs
- Accessible.cs
- AutoCompleteStringCollection.cs
- ClrPerspective.cs
- TextEndOfLine.cs
- EmptyControlCollection.cs
- CommandID.cs
- SessionStateContainer.cs
- ComboBox.cs
- DataGridrowEditEndingEventArgs.cs
- SoapAttributeAttribute.cs
- OrthographicCamera.cs
- BindingExpression.cs
- ConnectionPointCookie.cs
- LocalizabilityAttribute.cs
- Int32AnimationUsingKeyFrames.cs
- SiteMapNodeCollection.cs
- PerformanceCounterManager.cs
- SelectionChangedEventArgs.cs
- TTSVoice.cs
- XmlSchemaComplexContentExtension.cs
- CodePropertyReferenceExpression.cs
- CreateSequenceResponse.cs
- ImmComposition.cs
- ChangePassword.cs
- TypeSystemHelpers.cs
- SystemResourceKey.cs
- EntitySqlQueryState.cs
- Rect3D.cs
- XmlWriterSettings.cs
- DetailsViewCommandEventArgs.cs
- BehaviorEditorPart.cs
- ZipFileInfoCollection.cs
- ObjectAssociationEndMapping.cs
- SimpleTextLine.cs
- DataTrigger.cs
- XmlArrayAttribute.cs
- ImageUrlEditor.cs
- ConfigUtil.cs
- HttpHeaderCollection.cs
- HtmlInputRadioButton.cs
- DataGridViewCellStyleConverter.cs
- XmlExceptionHelper.cs
- TextInfo.cs
- CommandLibraryHelper.cs
- EditorBrowsableAttribute.cs
- CardSpaceException.cs
- _DisconnectOverlappedAsyncResult.cs
- HuffModule.cs
- TreeNodeStyleCollection.cs
- VisualTarget.cs
- EncryptedKey.cs
- DbMetaDataCollectionNames.cs
- ActivityExecutionFilter.cs
- PingOptions.cs
- EventLogPermissionEntryCollection.cs
- GridView.cs
- SapiRecoContext.cs
- SHA1CryptoServiceProvider.cs
- Margins.cs
- ReadOnlyDataSourceView.cs
- XmlSchemaValidationException.cs
- ReadOnlyDictionary.cs
- VisualProxy.cs
- TextTreePropertyUndoUnit.cs
- SqlUtils.cs
- DynamicMetaObjectBinder.cs
- TextClipboardData.cs
- InlineCollection.cs
- DataGridBoolColumn.cs
- SystemInfo.cs
- WindowsListViewScroll.cs
- OutKeywords.cs
- TextServicesPropertyRanges.cs