private void set_Sizing(object sender, MouseEventArgs e)
{
//-------------<
sizing_Cols_And_Rows() >-------------
if (isSizing == false) return;
//< check >
if (sizing_EdgeType < 0) return;
if (sizing_Panel == null) return;
//</ check >
if (e.LeftButton != MouseButtonState.Pressed)
{
isSizing = false;
}
else
{
//------< MouseButtonState.Pressed
>------
//< mouse position >
Point mouse_point = e.GetPosition(this);
double mouse_x = mouse_point.X;
double mouse_y = mouse_point.Y;
//</ mouse position >
//--< get Position >--
Point position = this.TranslatePoint(new Point(0, 0), sizing_Panel);
double pos_X = -position.X;
double pos_Y = -position.Y;
//--</ get Position >--
double diff_X = (pos_X - mouse_x);
double diff_Y = (pos_Y - mouse_y);
if (sizing_EdgeType == (int)EdgeTypes.TopMove)
{
//----< sizing Move >----
double new_Left = mouse_x - sizing_Offset_X;
double new_Top = mouse_y - sizing_Offset_Y;
//--< Snap >--
//< snap Left+Top >
if (new_Left < int_SnapRange) {
new_Left = 0; }
if (new_Top < int_SnapRange) { new_Top
= 0; }
//</ snap Left+Top >
//< snap adjust Right+Bottom >
if (CanvasMain.ActualWidth - (new_Left +
sizing_Panel.ActualWidth) < int_SnapRange) { new_Left =
CanvasMain.ActualWidth - sizing_Panel.ActualWidth; }
if (CanvasMain.ActualHeight - (new_Top +
sizing_Panel.ActualHeight) < int_SnapRange) { new_Top =
CanvasMain.ActualHeight - sizing_Panel.ActualHeight; }
//</ snap adjust Right+Bottom >
//--< snap next >--
//< snap next vertical >
if (new_Left != 0)
{
dbl_SnapNext =
snap_Next_X(new_Left);
if (dbl_SnapNext > 0)
{
new_Left =
dbl_SnapNext;
}
else
{
dbl_SnapNext =
snap_Next_X(new_Left + sizing_Panel.ActualWidth);
if (dbl_SnapNext > 0)
{ new_Left = dbl_SnapNext
- sizing_Panel.ActualWidth; }
}
}
//</ snap next vertical >
//< snap next horizontal >
if (new_Top != 0)
{
dbl_SnapNext =
snap_Next_Y(new_Top);
if (dbl_SnapNext > 0)
{
new_Top =
dbl_SnapNext;
}
else
{
dbl_SnapNext =
snap_Next_Y(new_Top + sizing_Panel.ActualHeight);
if (dbl_SnapNext > 0)
{ new_Top =
dbl_SnapNext - sizing_Panel.ActualHeight; }
}
}
//</ snap next horizontal >
//--</ snap next >--
//-</ Snap >--
//< set >
if (new_Left >= 0) Canvas.SetLeft(sizing_Panel,
new_Left);
if (new_Top >= 0) Canvas.SetTop(sizing_Panel, new_Top);
//</ set >
//----</ sizing Move >----
}
else
{
//-------------< sizing
>--------------
if ((sizing_EdgeType == (int)EdgeTypes.TopLeft) || (sizing_EdgeType == (int)EdgeTypes.BottomLeft))
{
//----< sizing Left >----
double new_Left = mouse_x;
double new_Width = (sizing_Panel.ActualWidth)
+ diff_X;
//< snap Left >
if (new_Left < int_SnapRange) {
new_Left = 0; new_Width = pos_X + sizing_Panel.ActualWidth; }
//</ snap Left >
//< snap next vertical >
if (new_Left != 0)
{
dbl_SnapNext =
snap_Next_X(new_Left);
if (dbl_SnapNext > 0)
{
new_Left =
dbl_SnapNext;
new_Width =
(pos_X-new_Left) + sizing_Panel.ActualWidth;
}
}
//</ snap next vertical >
//< set Left+Width >
if (new_Left >= 0) Canvas.SetLeft(sizing_Panel,
new_Left);
if (new_Width >= 0) sizing_Panel.Width
= new_Width;
//</ set Left+width >
//----</ sizing Left
>----
}
if ((sizing_EdgeType == (int)EdgeTypes.TopLeft) || (sizing_EdgeType == (int)EdgeTypes.TopRight))
{
//----< sizing Top >----
double new_Top = mouse_y;
double new_Height =
(sizing_Panel.ActualHeight) + diff_Y;
//< snap Top >
if (new_Top < int_SnapRange) { new_Top
= 0; new_Height = pos_Y +sizing_Panel.ActualHeight; }
//</ snap Top >
//< snap next vertical >
if (new_Top != 0)
{
dbl_SnapNext =
snap_Next_Y(new_Top);
if (dbl_SnapNext > 0)
{
new_Top =
dbl_SnapNext;
new_Height = (pos_Y -
new_Top) + sizing_Panel.ActualHeight;
}
}
//</ snap next vertical >
//< set Top+Height>
if (new_Top >= 0) Canvas.SetTop(sizing_Panel, new_Top);
if (new_Height >= 0)
sizing_Panel.Height = new_Height;
//</ set Top+Height >
//----</ sizing Top >----
}
if ((sizing_EdgeType == (int)EdgeTypes.TopRight) || (sizing_EdgeType == (int)EdgeTypes.BottomRight))
{
//----< sizing Right
>----
double new_Width = mouse_x - pos_X;
//< snap rigth >
if (CanvasMain.ActualWidth - (new_Width +
pos_X ) < int_SnapRange) { new_Width = CanvasMain.ActualWidth - pos_X ; }
//</ snap rigth >
//< snap next vertical >
if (new_Width != 0)
{
dbl_SnapNext =
snap_Next_X(pos_X+new_Width);
if (dbl_SnapNext > 0)
{
new_Width =
dbl_SnapNext- pos_X;
}
}
//</ snap next vertical >
//< set width >
if (new_Width >= 0) sizing_Panel.Width
= new_Width;
//</ set width >
//----</ sizing Right
>----
}
if ((sizing_EdgeType == (int)EdgeTypes.BottomLeft) || (sizing_EdgeType == (int)EdgeTypes.BottomRight))
{
//----< sizing Bottom
>----
double new_Height = mouse_y - pos_Y;
//< snap rigth >
if (CanvasMain.ActualHeight - (new_Height
+ pos_Y) < int_SnapRange) { new_Height = CanvasMain.ActualHeight - pos_Y;
}
//</ snap rigth >
//< snap next vertical >
if (new_Height != 0)
{
dbl_SnapNext =
snap_Next_Y(pos_Y + new_Height);
if (dbl_SnapNext > 0)
{
new_Height =
dbl_SnapNext - pos_Y;
}
}
//</ snap next vertical >
//< set width >
if (new_Height >= 0)
sizing_Panel.Height = new_Height;
//</ set width >
//----</ sizing Bottom
>----
}
//-------------</ sizing
>--------------
}
//------</ MouseButtonState.Pressed
>------
}
//-------------</
sizing_Cols_And_Rows() >-------------
}
|