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
- StorageFunctionMapping.cs
- WinFormsComponentEditor.cs
- TextEffect.cs
- GACMembershipCondition.cs
- SystemMulticastIPAddressInformation.cs
- BindableAttribute.cs
- SetterBaseCollection.cs
- ListControl.cs
- HttpClientCertificate.cs
- VersionedStream.cs
- DataFormats.cs
- PolyLineSegment.cs
- Menu.cs
- IItemContainerGenerator.cs
- ToolStripManager.cs
- BitConverter.cs
- AuthenticationModulesSection.cs
- OutputCache.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- TransactionFlowOption.cs
- InternalConfigHost.cs
- CompoundFileStorageReference.cs
- ObjectDataSourceChooseTypePanel.cs
- BrowserCapabilitiesCompiler.cs
- VisualStyleTypesAndProperties.cs
- DefaultParameterValueAttribute.cs
- CompositeCollection.cs
- IDispatchConstantAttribute.cs
- ClientBase.cs
- WebContext.cs
- SafeFileMappingHandle.cs
- MenuItem.cs
- XamlInt32CollectionSerializer.cs
- ConfigXmlWhitespace.cs
- WeakReferenceKey.cs
- QuotedPrintableStream.cs
- ParameterBinding.cs
- ContentType.cs
- ComboBox.cs
- TemplateControl.cs
- SmiMetaDataProperty.cs
- GroupBoxRenderer.cs
- DeviceFiltersSection.cs
- MinimizableAttributeTypeConverter.cs
- SendKeys.cs
- BinaryFormatterWriter.cs
- DocumentApplicationDocumentViewer.cs
- SchemaNamespaceManager.cs
- XmlDataDocument.cs
- DropShadowBitmapEffect.cs
- XmlSchemaCollection.cs
- MediaElement.cs
- CurrencyWrapper.cs
- SQLStringStorage.cs
- ComplexBindingPropertiesAttribute.cs
- SessionStateUtil.cs
- ResourceReferenceExpression.cs
- SpecialFolderEnumConverter.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- WebPartVerbCollection.cs
- X509Certificate.cs
- HtmlHead.cs
- ValidationSummary.cs
- Translator.cs
- CodeCastExpression.cs
- XmlEncodedRawTextWriter.cs
- Properties.cs
- AssemblyCollection.cs
- FontStyleConverter.cs
- AuthenticationServiceManager.cs
- GridViewDeletedEventArgs.cs
- ClientConfigurationHost.cs
- PointAnimationClockResource.cs
- EmptyControlCollection.cs
- Configuration.cs
- DesignerDataTableBase.cs
- PixelFormat.cs
- SmiRequestExecutor.cs
- ChainOfResponsibility.cs
- ShowExpandedMultiValueConverter.cs
- AutomationPropertyInfo.cs
- EndpointDiscoveryMetadata.cs
- InitializationEventAttribute.cs
- ApplicationActivator.cs
- LineInfo.cs
- odbcmetadatacolumnnames.cs
- DataGrid.cs
- SqlInternalConnection.cs
- CacheDependency.cs
- TransformerInfoCollection.cs
- EndOfStreamException.cs
- ListViewTableCell.cs
- X509Certificate2Collection.cs
- CompilationRelaxations.cs
- DuplicateWaitObjectException.cs
- DESCryptoServiceProvider.cs
- ArrayWithOffset.cs
- WebScriptMetadataMessageEncodingBindingElement.cs
- SafeWaitHandle.cs
- DataSourceControlBuilder.cs