|
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows;
using MefBasic;
namespace MediaAssistant
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : IMainWindow
{
private Point _ptCursorOffset;
public MainWindow()
{
InitializeComponent();
}
private void HandleMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if(WindowState==WindowState.Normal)
{
var borderSegment = (Border)sender;
_ptCursorOffset = GetCursorOffset(e.GetPosition(this), borderSegment);
borderSegment.CaptureMouse();
}
}
private Point GetCursorOffset(Point ptMousePosition, Border borderSegment)
{
var ptOffset = new Point(0, 0);
if (borderSegment == LeftBorder)
ptOffset.X = ptMousePosition.X;
else if (borderSegment == LeftTopBorder)
{
ptOffset.Y = ptMousePosition.Y;
ptOffset.X = ptMousePosition.X;
}
else if (borderSegment == TopBorder)
ptOffset.Y = ptMousePosition.Y;
else if (borderSegment == RightTopBorder)
{
ptOffset.Y = ptMousePosition.Y;
ptOffset.X = (Width - ptMousePosition.X);
}
else if (borderSegment == RightBorder)
ptOffset.X = (Width - ptMousePosition.X);
else if (borderSegment == RightBottolBorder)
{
ptOffset.X = (Width - ptMousePosition.X);
ptOffset.Y = (Height - ptMousePosition.Y);
}
else if (borderSegment == BottomBorder)
ptOffset.Y = Height - ptMousePosition.Y;
else if (borderSegment == LeftBottomBorder)
{
ptOffset.Y = (Height - ptMousePosition.Y);
ptOffset.X = ptMousePosition.X;
}
return ptOffset;
}
private void HandleMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
var borderSegment = (Border)sender;
borderSegment.ReleaseMouseCapture();
}
private void HandleMouseMove(object sender, MouseEventArgs e)
{
var borderSegment = (Border)sender;
if (borderSegment.IsMouseCaptured)
{
PerformResize(e.GetPosition(this), borderSegment);
}
}
private void PerformResize(Point ptMousePosition, Border borderSegment)
{
if (borderSegment == LeftBorder)
{
Left += (ptMousePosition.X - _ptCursorOffset.X);
Width -= (ptMousePosition.X - _ptCursorOffset.X);
}
else if (borderSegment == LeftTopBorder)
{
Left += (ptMousePosition.X - _ptCursorOffset.X);
Width -= (ptMousePosition.X - _ptCursorOffset.X);
Top += (ptMousePosition.Y - _ptCursorOffset.Y);
Height -= (ptMousePosition.Y - _ptCursorOffset.Y);
}
else if (borderSegment == TopBorder)
{
Top += (ptMousePosition.Y - _ptCursorOffset.Y);
Height -= (ptMousePosition.Y - _ptCursorOffset.Y);
}
else if (borderSegment == RightTopBorder)
{
Width = ptMousePosition.X + _ptCursorOffset.X;
Top += (ptMousePosition.Y - _ptCursorOffset.Y);
Height -= (ptMousePosition.Y - _ptCursorOffset.Y);
}
else if (borderSegment == RightBorder)
Width = ptMousePosition.X + _ptCursorOffset.X;
else if (borderSegment == RightBottolBorder)
{
Width = ptMousePosition.X + _ptCursorOffset.X;
Height = ptMousePosition.Y + _ptCursorOffset.Y;
}
else if (borderSegment == BottomBorder)
Height = ptMousePosition.Y + _ptCursorOffset.Y;
else if (borderSegment == LeftBottomBorder)
{
Left += (ptMousePosition.X - _ptCursorOffset.X);
Width -= (ptMousePosition.X - _ptCursorOffset.X);
Height = ptMousePosition.Y + _ptCursorOffset.Y;
}
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.