C# Class ZoomAndPan.ZoomAndPanControl

A class that wraps up zooming and panning of it's content.
Mostra file Open project: Zoomicon/ZUI Class Usage Examples

Public Properties

Property Type Description
AnimationDurationProperty DependencyProperty
ContentOffsetXProperty DependencyProperty
ContentOffsetYProperty DependencyProperty
ContentScalableProperty DependencyProperty
ContentScaleProperty DependencyProperty
ContentViewportHeightProperty DependencyProperty
ContentViewportWidthProperty DependencyProperty
ContentZoomFocusXProperty DependencyProperty
ContentZoomFocusYProperty DependencyProperty
IsMouseWheelScrollingEnabledProperty DependencyProperty
MaxContentScaleProperty DependencyProperty
MinContentScaleProperty DependencyProperty
ViewportZoomFocusXProperty DependencyProperty
ViewportZoomFocusYProperty DependencyProperty

Public Methods

Method Description
AnimatedScaleToFit ( ) : void

Do animation that scales the content so that it fits completely in the control.

AnimatedSnapTo ( Point contentPoint ) : void

Use animation to center the view on the specified point (in content coordinates).

AnimatedZoomAboutPoint ( double newContentScale, Point contentZoomFocus ) : void

Zoom in/out centered on the specified point (in content coordinates). The focus point is kept locked to it's on screen position (ala google maps).

AnimatedZoomTo ( Rect contentRect ) : void

Do an animated zoom to the specified rectangle (in content coordinates).

AnimatedZoomTo ( double contentScale ) : void

Zoom in/out centered on the viewport center.

AnimatedZoomTo ( double newScale, Rect contentRect ) : void

Do an animated zoom to view a specific scale and rectangle (in content coordinates).

AnimatedZoomToFit ( ) : void

Do animation that scales the content so that it fits completely in the control.

ElementToLogicalPoint ( Point elementPoint ) : Point
LineDown ( ) : void

Shift the content offset one line down.

LineLeft ( ) : void

Shift the content offset one line left.

LineRight ( ) : void

Shift the content offset one line right.

LineUp ( ) : void

Shift the content offset one line up.

LogicalToElementPoint ( Point logicalPoint ) : Point
MakeVisible ( UIElement visual, Rect rectangle ) : Rect

Bring the specified rectangle to view.

MakeVisible ( Visual visual, Rect rectangle ) : Rect

Bring the specified rectangle to view.

MouseWheelDown ( ) : void

Don't handle mouse wheel input from the ScrollViewer, the mouse wheel is used for zooming in and out, not for manipulating the scrollbars.

MouseWheelLeft ( ) : void

Don't handle mouse wheel input from the ScrollViewer, the mouse wheel is used for zooming in and out, not for manipulating the scrollbars.

MouseWheelRight ( ) : void

Don't handle mouse wheel input from the ScrollViewer, the mouse wheel is used for zooming in and out, not for manipulating the scrollbars.

MouseWheelUp ( ) : void

Don't handle mouse wheel input from the ScrollViewer, the mouse wheel is used for zooming in and out, not for manipulating the scrollbars.

OnApplyTemplate ( ) : void

Called when a template has been applied to the control.

PageDown ( ) : void

Shift the content offset one page down.

PageLeft ( ) : void

Shift the content offset one page left.

PageRight ( ) : void

Shift the content offset one page right.

PageUp ( ) : void

Shift the content offset one page up.

ScaleToFit ( ) : void

Instantly scale the content so that it fits completely in the control.

ScrollToCenter ( Rect contentRect ) : void
SetHorizontalOffset ( double offset ) : void

Called when the offset of the horizontal scrollbar has been set.

SetVerticalOffset ( double offset ) : void

Called when the offset of the vertical scrollbar has been set.

SnapContentOffsetTo ( Point contentOffset ) : void

Instantly center the view on the specified point (in content coordinates).

SnapTo ( Point contentPoint ) : void

Instantly center the view on the specified point (in content coordinates).

UpdateScrollOffsets ( ) : void
ZoomAboutPoint ( double newContentScale, Point contentZoomFocus ) : void

Zoom in/out centered on the specified point (in content coordinates). The focus point is kept locked to it's on screen position (ala google maps).

ZoomAndPanControl ( ) : System

/*Static*/ constructor to define metadata for the control (and link it to the style in Generic.xaml).

ZoomIn ( Point contentZoomCenter, double ZoomFactorStep = 0.2 ) : void

Zoom in at logical point

ZoomIn ( double ZoomFactorStep = 0.2 ) : void

Zoom in at view center

ZoomOut ( Point contentZoomCenter, double ZoomFactorStep = 0.2 ) : void

Zoom out at logical point

ZoomOut ( double ZoomFactorStep = 0.2 ) : void

Zoom out at view center

ZoomTo ( Rect contentRect ) : void

Instantly zoom to the specified rectangle (in content coordinates).

ZoomTo ( double contentScale ) : void

Zoom in/out centered on the viewport center.

ZoomToFit ( ) : void

Instantly scale the content so that it fits completely in the control.

Protected Methods

Method Description
ArrangeOverride ( Size arrangeBounds ) : Size

Arrange the control and it's children.

MeasureOverride ( Size constraint ) : Size

Measure the control and it's children.

OnMouseDoubleClick ( MouseButtonEventArgs e ) : void
OnMouseDown ( MouseButtonEventArgs e, MouseButton changedButton ) : void
OnMouseLeftButtonDown ( MouseButtonEventArgs e ) : void
OnMouseLeftButtonUp ( MouseButtonEventArgs e ) : void
OnMouseMove ( MouseEventArgs e ) : void
OnMouseRightButtonDown ( MouseButtonEventArgs e ) : void
OnMouseRightButtonUp ( MouseButtonEventArgs e ) : void
OnMouseUp ( MouseButtonEventArgs e, MouseButton changedButton ) : void
OnMouseWheel ( MouseWheelEventArgs e ) : void

Private Methods

Method Description
AnimatedZoomPointToViewportCenter ( double newContentScale, Point contentZoomFocus, EventHandler callback ) : void

Zoom to the specified scale and move the specified focus point to the center of the viewport.

ApplyDragZoomRect ( ) : void

When the user has finished dragging out the rectangle the zoom operation is applied.

ClearPrevZoomRect ( ) : void

Clear the memory of the previous zoom level.

ContentOffsetX_Coerce ( DependencyObject d, object baseValue ) : object

Method called to clamp the 'ContentOffsetX' value to its valid range.

ContentOffsetX_PropertyChanged ( DependencyObject o, DependencyPropertyChangedEventArgs e ) : void

Event raised when the 'ContentOffsetX' property has changed value.

ContentOffsetY_Coerce ( DependencyObject d, object baseValue ) : object

Method called to clamp the 'ContentOffsetY' value to its valid range.

ContentOffsetY_PropertyChanged ( DependencyObject o, DependencyPropertyChangedEventArgs e ) : void

Event raised when the 'ContentOffsetY' property has changed value.

ContentScale_Coerce ( DependencyObject d, object baseValue ) : object

Method called to clamp the 'ContentScale' value to its valid range.

ContentScale_PropertyChanged ( DependencyObject o, DependencyPropertyChangedEventArgs e ) : void

Event raised when the 'ContentScale' property has changed value.

FadeOutDragZoomRect ( ) : void
InitDragZoomRect ( Point pt1, Point pt2 ) : void

Initialise the rectangle that the use is dragging out.

MinOrMaxContentScale_PropertyChanged ( DependencyObject o, DependencyPropertyChangedEventArgs e ) : void

Event raised 'MinContentScale' or 'MaxContentScale' has changed.

ResetViewportZoomFocus ( ) : void

Reset the viewport zoom focus to the center of the viewport.

SavePrevZoomRect ( ) : void
SetDragZoomRect ( Point pt1, Point pt2 ) : void

Update the position and size of the rectangle that user is dragging out.

UpdateContentViewportSize ( ) : void

Update the size of the viewport in content coordinates after the viewport size or 'ContentScale' has changed.

UpdateContentZoomFocusX ( ) : void

Update the X coordinate of the zoom focus point in content coordinates.

UpdateContentZoomFocusY ( ) : void

Update the Y coordinate of the zoom focus point in content coordinates.

UpdateTranslationX ( ) : void

Update the X coordinate of the translation transformation.

UpdateTranslationY ( ) : void

Update the Y coordinate of the translation transformation.

UpdateViewportSize ( Size newSize ) : void

Update the viewport size from the specified size.

ZoomPointToViewportCenter ( double newContentScale, Point contentZoomFocus ) : void

Zoom to the specified scale and move the specified focus point to the center of the viewport.

Method Details

AnimatedScaleToFit() public method

Do animation that scales the content so that it fits completely in the control.
public AnimatedScaleToFit ( ) : void
return void

AnimatedSnapTo() public method

Use animation to center the view on the specified point (in content coordinates).
public AnimatedSnapTo ( Point contentPoint ) : void
contentPoint Point
return void

AnimatedZoomAboutPoint() public method

Zoom in/out centered on the specified point (in content coordinates). The focus point is kept locked to it's on screen position (ala google maps).
public AnimatedZoomAboutPoint ( double newContentScale, Point contentZoomFocus ) : void
newContentScale double
contentZoomFocus Point
return void

AnimatedZoomTo() public method

Do an animated zoom to the specified rectangle (in content coordinates).
public AnimatedZoomTo ( Rect contentRect ) : void
contentRect System.Windows.Rect
return void

AnimatedZoomTo() public method

Zoom in/out centered on the viewport center.
public AnimatedZoomTo ( double contentScale ) : void
contentScale double
return void

AnimatedZoomTo() public method

Do an animated zoom to view a specific scale and rectangle (in content coordinates).
public AnimatedZoomTo ( double newScale, Rect contentRect ) : void
newScale double
contentRect Rect
return void

AnimatedZoomToFit() public method

Do animation that scales the content so that it fits completely in the control.
public AnimatedZoomToFit ( ) : void
return void

ArrangeOverride() protected method

Arrange the control and it's children.
protected ArrangeOverride ( Size arrangeBounds ) : Size
arrangeBounds Size
return Size

ElementToLogicalPoint() public method

public ElementToLogicalPoint ( Point elementPoint ) : Point
elementPoint Point
return Point

LineDown() public method

Shift the content offset one line down.
public LineDown ( ) : void
return void

LineLeft() public method

Shift the content offset one line left.
public LineLeft ( ) : void
return void

LineRight() public method

Shift the content offset one line right.
public LineRight ( ) : void
return void

LineUp() public method

Shift the content offset one line up.
public LineUp ( ) : void
return void

LogicalToElementPoint() public method

public LogicalToElementPoint ( Point logicalPoint ) : Point
logicalPoint Point
return Point

MakeVisible() public method

Bring the specified rectangle to view.
public MakeVisible ( UIElement visual, Rect rectangle ) : Rect
visual UIElement
rectangle Rect
return Rect

MakeVisible() public method

Bring the specified rectangle to view.
public MakeVisible ( Visual visual, Rect rectangle ) : Rect
visual Visual
rectangle Rect
return Rect

MeasureOverride() protected method

Measure the control and it's children.
protected MeasureOverride ( Size constraint ) : Size
constraint Size
return Size

MouseWheelDown() public method

Don't handle mouse wheel input from the ScrollViewer, the mouse wheel is used for zooming in and out, not for manipulating the scrollbars.
public MouseWheelDown ( ) : void
return void

MouseWheelLeft() public method

Don't handle mouse wheel input from the ScrollViewer, the mouse wheel is used for zooming in and out, not for manipulating the scrollbars.
public MouseWheelLeft ( ) : void
return void

MouseWheelRight() public method

Don't handle mouse wheel input from the ScrollViewer, the mouse wheel is used for zooming in and out, not for manipulating the scrollbars.
public MouseWheelRight ( ) : void
return void

MouseWheelUp() public method

Don't handle mouse wheel input from the ScrollViewer, the mouse wheel is used for zooming in and out, not for manipulating the scrollbars.
public MouseWheelUp ( ) : void
return void

OnApplyTemplate() public method

Called when a template has been applied to the control.
public OnApplyTemplate ( ) : void
return void

OnMouseDoubleClick() protected method

protected OnMouseDoubleClick ( MouseButtonEventArgs e ) : void
e MouseButtonEventArgs
return void

OnMouseDown() protected method

protected OnMouseDown ( MouseButtonEventArgs e, MouseButton changedButton ) : void
e MouseButtonEventArgs
changedButton MouseButton
return void

OnMouseLeftButtonDown() protected method

protected OnMouseLeftButtonDown ( MouseButtonEventArgs e ) : void
e MouseButtonEventArgs
return void

OnMouseLeftButtonUp() protected method

protected OnMouseLeftButtonUp ( MouseButtonEventArgs e ) : void
e MouseButtonEventArgs
return void

OnMouseMove() protected method

protected OnMouseMove ( MouseEventArgs e ) : void
e MouseEventArgs
return void

OnMouseRightButtonDown() protected method

protected OnMouseRightButtonDown ( MouseButtonEventArgs e ) : void
e MouseButtonEventArgs
return void

OnMouseRightButtonUp() protected method

protected OnMouseRightButtonUp ( MouseButtonEventArgs e ) : void
e MouseButtonEventArgs
return void

OnMouseUp() protected method

protected OnMouseUp ( MouseButtonEventArgs e, MouseButton changedButton ) : void
e MouseButtonEventArgs
changedButton MouseButton
return void

OnMouseWheel() protected method

protected OnMouseWheel ( MouseWheelEventArgs e ) : void
e MouseWheelEventArgs
return void

PageDown() public method

Shift the content offset one page down.
public PageDown ( ) : void
return void

PageLeft() public method

Shift the content offset one page left.
public PageLeft ( ) : void
return void

PageRight() public method

Shift the content offset one page right.
public PageRight ( ) : void
return void

PageUp() public method

Shift the content offset one page up.
public PageUp ( ) : void
return void

ScaleToFit() public method

Instantly scale the content so that it fits completely in the control.
public ScaleToFit ( ) : void
return void

ScrollToCenter() public method

public ScrollToCenter ( Rect contentRect ) : void
contentRect Rect
return void

SetHorizontalOffset() public method

Called when the offset of the horizontal scrollbar has been set.
public SetHorizontalOffset ( double offset ) : void
offset double
return void

SetVerticalOffset() public method

Called when the offset of the vertical scrollbar has been set.
public SetVerticalOffset ( double offset ) : void
offset double
return void

SnapContentOffsetTo() public method

Instantly center the view on the specified point (in content coordinates).
public SnapContentOffsetTo ( Point contentOffset ) : void
contentOffset Point
return void

SnapTo() public method

Instantly center the view on the specified point (in content coordinates).
public SnapTo ( Point contentPoint ) : void
contentPoint Point
return void

UpdateScrollOffsets() public method

public UpdateScrollOffsets ( ) : void
return void

ZoomAboutPoint() public method

Zoom in/out centered on the specified point (in content coordinates). The focus point is kept locked to it's on screen position (ala google maps).
public ZoomAboutPoint ( double newContentScale, Point contentZoomFocus ) : void
newContentScale double
contentZoomFocus Point
return void

ZoomAndPanControl() public method

/*Static*/ constructor to define metadata for the control (and link it to the style in Generic.xaml).
public ZoomAndPanControl ( ) : System
return System

ZoomIn() public method

Zoom in at logical point
public ZoomIn ( Point contentZoomCenter, double ZoomFactorStep = 0.2 ) : void
contentZoomCenter Point
ZoomFactorStep double
return void

ZoomIn() public method

Zoom in at view center
public ZoomIn ( double ZoomFactorStep = 0.2 ) : void
ZoomFactorStep double
return void

ZoomOut() public method

Zoom out at logical point
public ZoomOut ( Point contentZoomCenter, double ZoomFactorStep = 0.2 ) : void
contentZoomCenter Point
ZoomFactorStep double
return void

ZoomOut() public method

Zoom out at view center
public ZoomOut ( double ZoomFactorStep = 0.2 ) : void
ZoomFactorStep double
return void

ZoomTo() public method

Instantly zoom to the specified rectangle (in content coordinates).
public ZoomTo ( Rect contentRect ) : void
contentRect Rect
return void

ZoomTo() public method

Zoom in/out centered on the viewport center.
public ZoomTo ( double contentScale ) : void
contentScale double
return void

ZoomToFit() public method

Instantly scale the content so that it fits completely in the control.
public ZoomToFit ( ) : void
return void

Property Details

AnimationDurationProperty public_oe static_oe property

public static DependencyProperty AnimationDurationProperty
return DependencyProperty

ContentOffsetXProperty public_oe static_oe property

public static DependencyProperty ContentOffsetXProperty
return DependencyProperty

ContentOffsetYProperty public_oe static_oe property

public static DependencyProperty ContentOffsetYProperty
return DependencyProperty

ContentScalableProperty public_oe static_oe property

public static DependencyProperty ContentScalableProperty
return DependencyProperty

ContentScaleProperty public_oe static_oe property

public static DependencyProperty ContentScaleProperty
return DependencyProperty

ContentViewportHeightProperty public_oe static_oe property

public static DependencyProperty ContentViewportHeightProperty
return DependencyProperty

ContentViewportWidthProperty public_oe static_oe property

public static DependencyProperty ContentViewportWidthProperty
return DependencyProperty

ContentZoomFocusXProperty public_oe static_oe property

public static DependencyProperty ContentZoomFocusXProperty
return DependencyProperty

ContentZoomFocusYProperty public_oe static_oe property

public static DependencyProperty ContentZoomFocusYProperty
return DependencyProperty

IsMouseWheelScrollingEnabledProperty public_oe static_oe property

public static DependencyProperty IsMouseWheelScrollingEnabledProperty
return DependencyProperty

MaxContentScaleProperty public_oe static_oe property

public static DependencyProperty MaxContentScaleProperty
return DependencyProperty

MinContentScaleProperty public_oe static_oe property

public static DependencyProperty MinContentScaleProperty
return DependencyProperty

ViewportZoomFocusXProperty public_oe static_oe property

public static DependencyProperty ViewportZoomFocusXProperty
return DependencyProperty

ViewportZoomFocusYProperty public_oe static_oe property

public static DependencyProperty ViewportZoomFocusYProperty
return DependencyProperty