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 / HitTestDrawingContextWalker.cs / 1 / HitTestDrawingContextWalker.cs
//----------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// File: HitTestDrawingContextWalker.cs
//
// Description: This file contains the implementation of HitTestDrawingContextWalker.
// This DrawingContextWalker is used to perform hit tests on renderdata.
//
// History:
// 04/10/2004 : adsmith - Created it.
//
//---------------------------------------------------------------------------
using MS.Internal;
using System;
using System.ComponentModel;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel.Design.Serialization;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Composition;
using System.Windows.Media.Imaging;
namespace System.Windows.Media
{
///
/// HitTestDrawingContextWalker - a DrawingContextWalker which will perform a point or
/// geometry based hit test on the contents of a render data.
///
internal abstract class HitTestDrawingContextWalker: DrawingContextWalker
{
///
/// Constructor
///
internal HitTestDrawingContextWalker()
{
}
///
/// IsHit Property - Returns whether the point or geometry intersected the drawing instructions.
///
internal abstract bool IsHit { get; }
abstract internal IntersectionDetail IntersectionDetail { get; }
#region Static Drawing Context Methods
///
/// DrawLine -
/// Draws a line with the specified pen.
/// Note that this API does not accept a Brush, as there is no area to fill.
///
/// The Pen with which to stroke the line.
/// The start Point for the line.
/// The end Point for the line.
public override void DrawLine(
Pen pen,
Point point0,
Point point1)
{
//
DrawGeometry(null /* brush */, pen, new LineGeometry(point0, point1));
}
///
/// DrawRectangle -
/// Draw a rectangle with the provided Brush and/or Pen.
/// If both the Brush and Pen are null this call is a no-op.
///
///
/// The Brush with which to fill the rectangle.
/// This is optional, and can be null, in which case no fill is performed.
///
///
/// The Pen with which to stroke the rectangle.
/// This is optional, and can be null, in which case no stroke is performed.
///
/// The Rect to fill and/or stroke.
public override void DrawRectangle(
Brush brush,
Pen pen,
Rect rectangle)
{
//
DrawGeometry(brush, pen, new RectangleGeometry(rectangle));
}
///
/// DrawRoundedRectangle -
/// Draw a rounded rectangle with the provided Brush and/or Pen.
/// If both the Brush and Pen are null this call is a no-op.
///
///
/// The Brush with which to fill the rectangle.
/// This is optional, and can be null, in which case no fill is performed.
///
///
/// The Pen with which to stroke the rectangle.
/// This is optional, and can be null, in which case no stroke is performed.
///
/// The Rect to fill and/or stroke.
///
/// The radius in the X dimension of the rounded corners of this
/// rounded Rect. This value will be clamped to the range [0..rectangle.Width/2]
///
///
/// The radius in the Y dimension of the rounded corners of this
/// rounded Rect. This value will be clamped to the range [0..rectangle.Height/2].
///
public override void DrawRoundedRectangle(
Brush brush,
Pen pen,
Rect rectangle,
Double radiusX,
Double radiusY)
{
//
DrawGeometry(brush, pen, new RectangleGeometry(rectangle, radiusX, radiusY));
}
///
/// DrawEllipse -
/// Draw an ellipse with the provided Brush and/or Pen.
/// If both the Brush and Pen are null this call is a no-op.
///
///
/// The Brush with which to fill the ellipse.
/// This is optional, and can be null, in which case no fill is performed.
///
///
/// The Pen with which to stroke the ellipse.
/// This is optional, and can be null, in which case no stroke is performed.
///
///
/// The center of the ellipse to fill and/or stroke.
///
///
/// The radius in the X dimension of the ellipse.
/// The absolute value of the radius provided will be used.
///
///
/// The radius in the Y dimension of the ellipse.
/// The absolute value of the radius provided will be used.
///
public override void DrawEllipse(
Brush brush,
Pen pen,
Point center,
Double radiusX,
Double radiusY)
{
//
DrawGeometry(brush, pen, new EllipseGeometry(center, radiusX, radiusY));
}
///
/// DrawImage -
/// Draw an Image into the region specified by the Rect.
/// The Image will potentially be stretched and distorted to fit the Rect.
/// For more fine grained control, consider filling a Rect with an ImageBrush via
/// DrawRectangle.
///
/// The ImageSource to draw.
///
/// The Rect into which the ImageSource will be fit.
///
public override void DrawImage(
ImageSource imageSource,
Rect rectangle)
{
//
ImageBrush imageBrush = new ImageBrush();
// The ImageSource provided will be shared between the original location and the new ImageBrush
// we're creating - this will by default break property inheritance, dynamic resource references
// and databinding. To prevent this, we mark the new ImageBrush.CanBeInheritanceContext == false.
imageBrush.CanBeInheritanceContext = false;
imageBrush.ImageSource = imageSource;
DrawGeometry(imageBrush, null /* pen */, new RectangleGeometry(rectangle));
}
///
/// DrawVideo -
/// Draw a Video into the region specified by the Rect.
/// The Video will potentially be stretched and distorted to fit the Rect.
/// For more fine grained control, consider filling a Rect with a VideoBrush via
/// DrawRectangle.
///
/// The MediaPlayer to draw.
///
/// The Rect into which the MediaPlayer will be fit.
///
public override void DrawVideo(
MediaPlayer video,
Rect rectangle)
{
// Hit test a rect with a VideoBrush once it exists.
// DrawGeometry(new VideoBrush(video), null /* pen */, new RectangleGeometry(rectangle));
//
DrawGeometry(Brushes.Black, null /* pen */, new RectangleGeometry(rectangle));
}
#endregion Static Drawing Context Methods
#region Protected Fields
// Indicates if the Visual fully contains the hit-test point or geometry
protected bool _contains;
#endregion Protected Fields
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//----------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// File: HitTestDrawingContextWalker.cs
//
// Description: This file contains the implementation of HitTestDrawingContextWalker.
// This DrawingContextWalker is used to perform hit tests on renderdata.
//
// History:
// 04/10/2004 : adsmith - Created it.
//
//---------------------------------------------------------------------------
using MS.Internal;
using System;
using System.ComponentModel;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel.Design.Serialization;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Composition;
using System.Windows.Media.Imaging;
namespace System.Windows.Media
{
///
/// HitTestDrawingContextWalker - a DrawingContextWalker which will perform a point or
/// geometry based hit test on the contents of a render data.
///
internal abstract class HitTestDrawingContextWalker: DrawingContextWalker
{
///
/// Constructor
///
internal HitTestDrawingContextWalker()
{
}
///
/// IsHit Property - Returns whether the point or geometry intersected the drawing instructions.
///
internal abstract bool IsHit { get; }
abstract internal IntersectionDetail IntersectionDetail { get; }
#region Static Drawing Context Methods
///
/// DrawLine -
/// Draws a line with the specified pen.
/// Note that this API does not accept a Brush, as there is no area to fill.
///
/// The Pen with which to stroke the line.
/// The start Point for the line.
/// The end Point for the line.
public override void DrawLine(
Pen pen,
Point point0,
Point point1)
{
//
DrawGeometry(null /* brush */, pen, new LineGeometry(point0, point1));
}
///
/// DrawRectangle -
/// Draw a rectangle with the provided Brush and/or Pen.
/// If both the Brush and Pen are null this call is a no-op.
///
///
/// The Brush with which to fill the rectangle.
/// This is optional, and can be null, in which case no fill is performed.
///
///
/// The Pen with which to stroke the rectangle.
/// This is optional, and can be null, in which case no stroke is performed.
///
/// The Rect to fill and/or stroke.
public override void DrawRectangle(
Brush brush,
Pen pen,
Rect rectangle)
{
//
DrawGeometry(brush, pen, new RectangleGeometry(rectangle));
}
///
/// DrawRoundedRectangle -
/// Draw a rounded rectangle with the provided Brush and/or Pen.
/// If both the Brush and Pen are null this call is a no-op.
///
///
/// The Brush with which to fill the rectangle.
/// This is optional, and can be null, in which case no fill is performed.
///
///
/// The Pen with which to stroke the rectangle.
/// This is optional, and can be null, in which case no stroke is performed.
///
/// The Rect to fill and/or stroke.
///
/// The radius in the X dimension of the rounded corners of this
/// rounded Rect. This value will be clamped to the range [0..rectangle.Width/2]
///
///
/// The radius in the Y dimension of the rounded corners of this
/// rounded Rect. This value will be clamped to the range [0..rectangle.Height/2].
///
public override void DrawRoundedRectangle(
Brush brush,
Pen pen,
Rect rectangle,
Double radiusX,
Double radiusY)
{
//
DrawGeometry(brush, pen, new RectangleGeometry(rectangle, radiusX, radiusY));
}
///
/// DrawEllipse -
/// Draw an ellipse with the provided Brush and/or Pen.
/// If both the Brush and Pen are null this call is a no-op.
///
///
/// The Brush with which to fill the ellipse.
/// This is optional, and can be null, in which case no fill is performed.
///
///
/// The Pen with which to stroke the ellipse.
/// This is optional, and can be null, in which case no stroke is performed.
///
///
/// The center of the ellipse to fill and/or stroke.
///
///
/// The radius in the X dimension of the ellipse.
/// The absolute value of the radius provided will be used.
///
///
/// The radius in the Y dimension of the ellipse.
/// The absolute value of the radius provided will be used.
///
public override void DrawEllipse(
Brush brush,
Pen pen,
Point center,
Double radiusX,
Double radiusY)
{
//
DrawGeometry(brush, pen, new EllipseGeometry(center, radiusX, radiusY));
}
///
/// DrawImage -
/// Draw an Image into the region specified by the Rect.
/// The Image will potentially be stretched and distorted to fit the Rect.
/// For more fine grained control, consider filling a Rect with an ImageBrush via
/// DrawRectangle.
///
/// The ImageSource to draw.
///
/// The Rect into which the ImageSource will be fit.
///
public override void DrawImage(
ImageSource imageSource,
Rect rectangle)
{
//
ImageBrush imageBrush = new ImageBrush();
// The ImageSource provided will be shared between the original location and the new ImageBrush
// we're creating - this will by default break property inheritance, dynamic resource references
// and databinding. To prevent this, we mark the new ImageBrush.CanBeInheritanceContext == false.
imageBrush.CanBeInheritanceContext = false;
imageBrush.ImageSource = imageSource;
DrawGeometry(imageBrush, null /* pen */, new RectangleGeometry(rectangle));
}
///
/// DrawVideo -
/// Draw a Video into the region specified by the Rect.
/// The Video will potentially be stretched and distorted to fit the Rect.
/// For more fine grained control, consider filling a Rect with a VideoBrush via
/// DrawRectangle.
///
/// The MediaPlayer to draw.
///
/// The Rect into which the MediaPlayer will be fit.
///
public override void DrawVideo(
MediaPlayer video,
Rect rectangle)
{
// Hit test a rect with a VideoBrush once it exists.
// DrawGeometry(new VideoBrush(video), null /* pen */, new RectangleGeometry(rectangle));
//
DrawGeometry(Brushes.Black, null /* pen */, new RectangleGeometry(rectangle));
}
#endregion Static Drawing Context Methods
#region Protected Fields
// Indicates if the Visual fully contains the hit-test point or geometry
protected bool _contains;
#endregion Protected Fields
}
}
// 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
- PropertyContainer.cs
- Vector3DAnimationBase.cs
- TableLayoutCellPaintEventArgs.cs
- ContourSegment.cs
- IOException.cs
- CornerRadiusConverter.cs
- FormsAuthenticationUserCollection.cs
- _IPv6Address.cs
- HtmlElement.cs
- ReadOnlyTernaryTree.cs
- XamlWriter.cs
- UserNameServiceElement.cs
- MenuItemAutomationPeer.cs
- KeyInterop.cs
- SpellerInterop.cs
- DataServiceStreamResponse.cs
- ConsumerConnectionPointCollection.cs
- ServiceDurableInstanceContextProvider.cs
- DurationConverter.cs
- DataTrigger.cs
- ScriptServiceAttribute.cs
- MissingFieldException.cs
- LinkedList.cs
- GenericNameHandler.cs
- SimpleMailWebEventProvider.cs
- PtsPage.cs
- BitSet.cs
- SiteMapDataSourceView.cs
- BamlLocalizableResourceKey.cs
- DependencyPropertyChangedEventArgs.cs
- DropShadowBitmapEffect.cs
- UriWriter.cs
- KnownBoxes.cs
- WmlCalendarAdapter.cs
- FormViewDeletedEventArgs.cs
- GridPattern.cs
- TextEncodedRawTextWriter.cs
- ClientSettings.cs
- PolyLineSegment.cs
- CqlErrorHelper.cs
- KeyValueSerializer.cs
- VSDExceptions.cs
- MdiWindowListStrip.cs
- FreeFormDragDropManager.cs
- SafeNativeMemoryHandle.cs
- SizeLimitedCache.cs
- UserValidatedEventArgs.cs
- KeyBinding.cs
- MeasurementDCInfo.cs
- ColorConvertedBitmapExtension.cs
- DataObjectPastingEventArgs.cs
- AgileSafeNativeMemoryHandle.cs
- XmlSchemaSimpleContentExtension.cs
- IssuanceLicense.cs
- DataGridCommandEventArgs.cs
- AnimatedTypeHelpers.cs
- DbProviderFactories.cs
- TextAutomationPeer.cs
- FrameworkContextData.cs
- GeometryDrawing.cs
- GPStream.cs
- RequestQueue.cs
- HeaderedContentControl.cs
- RadioButton.cs
- Memoizer.cs
- LogReserveAndAppendState.cs
- WindowAutomationPeer.cs
- OrderedHashRepartitionStream.cs
- Socket.cs
- CollectionViewGroupInternal.cs
- TextChange.cs
- RootBrowserWindowAutomationPeer.cs
- BufferedGenericXmlSecurityToken.cs
- XmlSerializerObjectSerializer.cs
- PeerTransportSecuritySettings.cs
- ActivityCodeGenerator.cs
- SocketInformation.cs
- webproxy.cs
- TemplateControlParser.cs
- XsdValidatingReader.cs
- MessageProtectionOrder.cs
- DesignerSerializerAttribute.cs
- ArrayItemReference.cs
- BoundingRectTracker.cs
- Nodes.cs
- OwnerDrawPropertyBag.cs
- UpdateException.cs
- PasswordBox.cs
- SystemIPInterfaceStatistics.cs
- CodeTypeDelegate.cs
- IncrementalReadDecoders.cs
- PathParser.cs
- InfoCardClaim.cs
- WebServiceHostFactory.cs
- Input.cs
- XmlSchemaComplexContentRestriction.cs
- KnownTypeAttribute.cs
- ObjectListSelectEventArgs.cs
- SQLInt64.cs
- Pen.cs