BigLitho/Large.Lito.Database/Make3_Treko3D/TestLayers/Form1.cs

419 lines
15 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TestLayers
{
public partial class Form1 : Form
{
private struct Selection
{
public int Top;
public int Left;
public int Height;
public int Width;
}
private bool wEdge;
private bool eEdge;
private bool nEdge;
private bool sEdge;
private bool Sizing;
private const int EdgeSize = 6;
private Point StartCoord;
private Point OldCoord;
private Point NewCoord;
private Selection Rect;
private bool MovePic;
private bool MoveMain;
private bool SizePic;
private ControlLibrary.LayerPictureBox layerPictureBox4;
public Form1()
{
InitializeComponent();
InitializeComponentExt();
pictureBox2.Parent = pictureBox1;
pictureBox2.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox3.Parent = pictureBox2;
pictureBox3.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox4.Parent = pictureBox2;
pictureBox4.SizeMode = PictureBoxSizeMode.StretchImage;
layerPictureBox4.Parent = pictureBox2;
layerPictureBox4.SizeMode = PictureBoxSizeMode.StretchImage;
}
private void InitializeComponentExt()
{
this.layerPictureBox4 = new ControlLibrary.LayerPictureBox();
//
// layerPictureBox4
//
this.layerPictureBox4.BackColor = System.Drawing.Color.Transparent;
this.layerPictureBox4.Image = global::TestLayers.Properties.Resources.broculo;
this.layerPictureBox4.Location = new System.Drawing.Point(37, 154);
this.layerPictureBox4.Name = "pictureBox4";
this.layerPictureBox4.Size = new System.Drawing.Size(139, 48);
this.layerPictureBox4.TabIndex = 7;
this.layerPictureBox4.TabStop = false;
//this.layerPictureBox4.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pictureBox4_MouseDown);
//this.layerPictureBox4.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBox4_MouseMove);
//this.layerPictureBox4.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pictureBox4_MouseUp);
}
private void ScrollAdjust()
{
//using (pictureBox2)
//{
if (pictureBox2.Width < pictureBox1.Width)
{
pictureBox2.Left = (pictureBox1.Width - pictureBox2.Width) / 2;
hScrollBar1.Enabled = false;
} else
{
if (pictureBox2.Left > 0)
pictureBox2.Left = 0;
hScrollBar1.Minimum = 0;
hScrollBar1.Maximum = pictureBox2.Width - pictureBox1.Width;
hScrollBar1.SmallChange = 1;
hScrollBar1.LargeChange = 10;
hScrollBar1.Enabled = true;
}
if (pictureBox2.Height < pictureBox1.Height)
{
pictureBox2.Top = (pictureBox1.Height - pictureBox2.Height) / 2;
vScrollBar1.Enabled = false;
}
else
{
if (pictureBox2.Top > 0)
pictureBox2.Top = 0;
vScrollBar1.Minimum = 0;
vScrollBar1.Maximum = pictureBox2.Height - pictureBox1.Height;
vScrollBar1.SmallChange = 1;
vScrollBar1.LargeChange = 10;
vScrollBar1.Enabled = true;
}
//}
}
private void Form1_Resize(object sender, EventArgs e)
{
ScrollAdjust();
}
private void pictureBox2_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Middle)
MoveMain = true;
StartCoord = e.Location;
}
private void pictureBox2_MouseUp(object sender, MouseEventArgs e)
{
MoveMain = false;
}
private void pictureBox2_MouseMove(object sender, MouseEventArgs e)
{
if (MoveMain)
{
if (vScrollBar1.Enabled)
{
NewCoord.Y = pictureBox2.Top - (StartCoord.Y - e.Location.Y);
if (NewCoord.Y > 0)
NewCoord.Y = 0;
if (NewCoord.Y < -vScrollBar1.Maximum)
NewCoord.Y = -vScrollBar1.Maximum;
pictureBox2.Top = NewCoord.Y;
vScrollBar1.Value = -NewCoord.Y;
}
if (hScrollBar1.Enabled)
{
NewCoord.X = pictureBox2.Left - (StartCoord.X - e.Location.X);
if (NewCoord.X > 0)
NewCoord.X = 0;
if (NewCoord.X < -hScrollBar1.Maximum)
NewCoord.X = -hScrollBar1.Maximum;
pictureBox2.Left = NewCoord.X;
hScrollBar1.Value = -NewCoord.X;
}
}
}
private void pictureBox3_MouseDown(object sender, MouseEventArgs ee)
{
// Click on Sizable Image Region - NB. Child picturebox
if (ee.Button == MouseButtons.Left)
{
OldCoord = ee.Location;
StartCoord = ee.Location;
if (Sizing)
SizePic = true;
else
MovePic = true;
}
if (ee.Button == MouseButtons.Middle)
{
MoveMain = true;
StartCoord = ee.Location;
}
}
private void pictureBox3_MouseUp(object sender, MouseEventArgs e)
{
// Release Click in Sizable Image Region - NB. Child picturebox
SizePic = false;
MovePic = false;
MoveMain = false;
}
private void pictureBox3_MouseMove(object sender, MouseEventArgs ee)
{
//Mouse move inside Image Region... - NB. Child Picturebox
if (ee.Button == MouseButtons.None)
{
if (ee.Location.X < EdgeSize && ee.Location.X > 0)
wEdge = true;
else
wEdge = false;
if (ee.Location.X > pictureBox3.Size.Width - EdgeSize && ee.Location.X < pictureBox3.Size.Width)
eEdge = true;
else
eEdge = false;
if (ee.Location.Y < EdgeSize && ee.Location.Y > 0)
nEdge = true;
else
nEdge = false;
if (ee.Location.Y > pictureBox3.Size.Height - EdgeSize && ee.Location.Y < pictureBox3.Size.Height)
sEdge = true;
else
sEdge = false;
Sizing = true;
}
else if (ee.Button == MouseButtons.Left)
{
if (MovePic)
{
pictureBox3.Top = pictureBox3.Top + (ee.Location.Y - StartCoord.Y);
pictureBox3.Left = pictureBox3.Left + (ee.Location.X - StartCoord.X);
}
// The code following works when used with a child Picturebox...
// NB. Alternate code will apply if working on a rect region selection.....
if (SizePic)
{
Rect.Top = pictureBox3.Top;
Rect.Height = pictureBox3.Height;
Rect.Left = pictureBox3.Left;
Rect.Width = pictureBox3.Width;
if (eEdge)
Rect.Width = ee.Location.X;
if (sEdge)
Rect.Height = ee.Location.Y;
if (wEdge)
{
Rect.Left = Rect.Left - (StartCoord.X - ee.Location.X);
Rect.Width = Rect.Width + (StartCoord.X - ee.Location.X);
}
if (nEdge)
{
Rect.Top = Rect.Top - (StartCoord.Y - ee.Location.Y);
Rect.Height = Rect.Height + (StartCoord.Y - ee.Location.Y);
}
if (Rect.Height < 0)
{
Rect.Top = Rect.Top + Rect.Height;
Rect.Height = Math.Abs(Rect.Height);
nEdge = !nEdge;
sEdge = !sEdge;
StartCoord.Y = 0;
}
if (Rect.Width < 0)
{
Rect.Left = Rect.Left + Rect.Width;
Rect.Width = Math.Abs(Rect.Width);
eEdge = !eEdge;
wEdge = !wEdge;
StartCoord.X = 0;
}
pictureBox3.Top = Rect.Top;
pictureBox3.Height = Rect.Height;
pictureBox3.Left = Rect.Left;
pictureBox3.Width = Rect.Width;
}
}
if ((nEdge || sEdge) && !(wEdge || eEdge))
pictureBox3.Cursor = Cursors.SizeNS;
else if ((wEdge || eEdge) && !(nEdge || sEdge))
pictureBox3.Cursor = Cursors.SizeWE;
else if ((nEdge && eEdge) || (sEdge && wEdge))
pictureBox3.Cursor = Cursors.SizeNESW;
else if ((nEdge && wEdge) || (sEdge && eEdge))
pictureBox3.Cursor = Cursors.SizeNWSE;
else
{
pictureBox3.Cursor = Cursors.Default;
Sizing = false;
}
OldCoord = ee.Location;
if (MoveMain)
pictureBox2_MouseMove(sender, ee);
}
private void VScrollBar1_Scroll(object sender, ScrollEventArgs e)
{
pictureBox2.Top = -vScrollBar1.Value;
}
private void hScrollBar1_Scroll(object sender, ScrollEventArgs e)
{
pictureBox2.Left = -hScrollBar1.Value;
}
private void pictureBox4_MouseDown(object sender, MouseEventArgs e)
{
// Click on Sizable Image Region - NB. Child picturebox
if (e.Button == MouseButtons.Left)
{
OldCoord = e.Location;
StartCoord = e.Location;
if (Sizing)
SizePic = true;
else
MovePic = true;
}
if (e.Button == MouseButtons.Middle)
{
MoveMain = true;
StartCoord = e.Location;
}
}
private void pictureBox4_MouseUp(object sender, MouseEventArgs e)
{
// Release Click in Sizable Image Region - NB. Child picturebox
SizePic = false;
MovePic = false;
MoveMain = false;
}
private void pictureBox4_MouseMove(object sender, MouseEventArgs e)
{
//Mouse move inside Image Region... - NB. Child Picturebox
if (e.Button == MouseButtons.None)
{
if (e.Location.X < EdgeSize && e.Location.X > 0)
wEdge = true;
else
wEdge = false;
if (e.Location.X > pictureBox4.Size.Width - EdgeSize && e.Location.X < pictureBox4.Size.Width)
eEdge = true;
else
eEdge = false;
if (e.Location.Y < EdgeSize && e.Location.Y > 0)
nEdge = true;
else
nEdge = false;
if (e.Location.Y > pictureBox4.Size.Height - EdgeSize && e.Location.Y < pictureBox4.Size.Height)
sEdge = true;
else
sEdge = false;
Sizing = true;
}
else if (e.Button == MouseButtons.Left)
{
if (MovePic)
{
pictureBox4.Top = pictureBox4.Top + (e.Location.Y - StartCoord.Y);
pictureBox4.Left = pictureBox4.Left + (e.Location.X - StartCoord.X);
}
// The code following works when used with a child Picturebox...
// NB. Alternate code will apply if working on a rect region selection.....
if (SizePic)
{
Rect.Top = pictureBox4.Top;
Rect.Height = pictureBox4.Height;
Rect.Left = pictureBox4.Left;
Rect.Width = pictureBox4.Width;
if (eEdge)
Rect.Width = e.Location.X;
if (sEdge)
Rect.Height = e.Location.Y;
if (wEdge)
{
Rect.Left = Rect.Left - (StartCoord.X - e.Location.X);
Rect.Width = Rect.Width + (StartCoord.X - e.Location.X);
}
if (nEdge)
{
Rect.Top = Rect.Top - (StartCoord.Y - e.Location.Y);
Rect.Height = Rect.Height + (StartCoord.Y - e.Location.Y);
}
if (Rect.Height < 0)
{
Rect.Top = Rect.Top + Rect.Height;
Rect.Height = Math.Abs(Rect.Height);
nEdge = !nEdge;
sEdge = !sEdge;
StartCoord.Y = 0;
}
if (Rect.Width < 0)
{
Rect.Left = Rect.Left + Rect.Width;
Rect.Width = Math.Abs(Rect.Width);
eEdge = !eEdge;
wEdge = !wEdge;
StartCoord.X = 0;
}
pictureBox4.Top = Rect.Top;
pictureBox4.Height = Rect.Height;
pictureBox4.Left = Rect.Left;
pictureBox4.Width = Rect.Width;
}
}
if ((nEdge || sEdge) && !(wEdge || eEdge))
pictureBox4.Cursor = Cursors.SizeNS;
else if ((wEdge || eEdge) && !(nEdge || sEdge))
pictureBox4.Cursor = Cursors.SizeWE;
else if ((nEdge && eEdge) || (sEdge && wEdge))
pictureBox4.Cursor = Cursors.SizeNESW;
else if ((nEdge && wEdge) || (sEdge && eEdge))
pictureBox4.Cursor = Cursors.SizeNWSE;
else
{
pictureBox4.Cursor = Cursors.Default;
Sizing = false;
}
OldCoord = e.Location;
if (MoveMain)
pictureBox2_MouseMove(sender, e);
}
}
}