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; using Projects; using ControlLibrary; using Frames; using Data; using ClassLibrary; namespace ChildForms { public partial class frmChildProject : Form { #region Local Data Project _projectObj; Layer _layerObj; ProjectControl _projectControl; string _technologyName; string _sourceFilePath; 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 List _layers = new List(); //internal LayerPictureBox layerPicBox1; //internal LayerPictureBox layerPicBox2; private LayerPictureBox layerPicBox3; //private LayerPictureBox layerPicBox4; int _mmToPixelsCoeffPreview = 1; #endregion #region Get-Set public Project ProjectObj { get { return _projectObj; } set { _projectObj = value; } } public Layer LayerObj { get { return _layerObj; } set { _layerObj = value; } } public ProjectControl ProjectControl { get { return _projectControl; } set { _projectControl = value; } } #endregion public frmChildProject() { InitializeComponent(); //InitializeExt(); } private void InitializeExt() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LayerControl)); //RefreshLayersPicBoxes(); //this.layerPicBox4 = new LayerPictureBox(); this.layerPicBox3 = new LayerPictureBox(); //this.layerPicBox2 = new LayerPictureBox(); //this.layerPicBox1 = new LayerPictureBox(); //layerPicBox2.Parent = pictureBox1; //layerPicBox2.SizeMode = PictureBoxSizeMode.StretchImage; layerPicBox3.Parent = pictureBox1; layerPicBox3.SizeMode = PictureBoxSizeMode.StretchImage; //layerPicBox4.Parent = pictureBox1; //layerPicBox4.SizeMode = PictureBoxSizeMode.StretchImage; //layerPicBox3.Image = global::TestLayers.Properties.Resources.test1; //layerPicBox3.Location = new System.Drawing.Point(27, 19); //layerPicBox3.Name = "pictureBox3"; //layerPicBox3.Size = new System.Drawing.Size(139, 48); this.layerPicBox3.BackColor = System.Drawing.Color.Transparent; this.layerPicBox3.Image = ((System.Drawing.Image)(resources.GetObject("pictThumbnail.Image"))); ; this.layerPicBox3.Location = new System.Drawing.Point(10, 10); this.layerPicBox3.Name = "pictureBox3"; this.layerPicBox3.Size = new System.Drawing.Size(48, 48); //this.layerPicBox3.TabIndex = 7; //this.layerPicBox3.TabStop = false; //this.layerPicBox3.BringToFront(); //hScrollBar1.Parent = this; //vScrollBar1.Parent = this; //pictureBox2.Controls.Add(layerPicBox2); } public void Draw_HologramBorder(decimal nx, decimal ny) { pictureBox1.Image = new Bitmap(2000, 2000); Bitmap bmp = (Bitmap)pictureBox1.Image; Graphics g = Graphics.FromImage(bmp); ClearImage(g); Color col = Color.FromArgb(255, 255, 0, 0); var Pn = new Pen(col, 3); g.DrawRectangle(Pn, 0, 0, (float)_projectObj.HologramWidth * _mmToPixelsCoeffPreview, (float)_projectObj.HologramHeight * _mmToPixelsCoeffPreview); Color col1 = Color.FromArgb(255, 255, 255, 0); var Pn1 = new Pen(col1, 1); g.DrawRectangle(Pn1, 0, 0, (float)0.2 * _mmToPixelsCoeffPreview, (float)0.15 * _mmToPixelsCoeffPreview); Color col2 = Color.FromArgb(255, 0, 255, 0); var Pn2 = new Pen(col2, 1); g.DrawRectangle(Pn2, 0, 0, (float)0.2 * _mmToPixelsCoeffPreview * Convert.ToInt32(nx), (float)0.15 * _mmToPixelsCoeffPreview * Convert.ToInt32(ny)); g.Dispose(); } public void ClearImage(Graphics g) { g.Clear(Color.Black); } public void RefreshLayersPicBoxes() { LayerPictureBox lpb; LayerPictureBox lpbFace = null; LayerPictureBox lpbDotrix = null; LayerPictureBox lpbTeapot = null; if (_projectObj != null) { ProjectControl.LoadProject(_projectObj.ProjectId); _projectObj = ProjectControl.Project; int i = 0; if (_projectObj != null && _projectObj.Layers != null && _projectObj.Layers.Count > 0) { foreach (Layer layer in _projectObj.Layers) { lpb = new LayerPictureBox(); if (i == 2) lpbFace = lpb; if (i == 0) lpbDotrix = lpb; if (i == 1) lpbTeapot = lpb; lpb.SizeMode = PictureBoxSizeMode.StretchImage; lpb.BackColor = System.Drawing.Color.Transparent; //lpb.Image = global::TestLayers.Properties.Resources.broculo; //((System.Drawing.Image)(resources.GetObject("pictThumbnail.Image"))); ; lpb.Location = new System.Drawing.Point(Convert.ToInt32(layer.LayerLeft) * 2, Convert.ToInt32(layer.LayerTop) * 2); lpb.Name = layer.LayerName; lpb.Size = new System.Drawing.Size(Convert.ToInt32(layer.LayerWidth)*2, Convert.ToInt32(layer.LayerHeight)*2); //pgb.LayerService = layerService; //pgb.LayerModel = layerModel; lpb.Padding = new Padding(5); _technologyName = layer.TechnologyName; _sourceFilePath = layer.SourceFilePath; if (_technologyName == "Treko3D") { string[] _rakurseFiles = Helper.LoadRakurseFiles(_sourceFilePath); string filePath = _rakurseFiles[0]; try { lpb.Image = new Bitmap(filePath); } catch (Exception e) { } } else if (_technologyName == "Treko") { //string[] _rakurseFiles = Helper.LoadRakurseFiles(_sourceFilePath); string filePath = _sourceFilePath; try { lpb.Image = new Bitmap(filePath); } catch (Exception e) { } } //lpb.LayerName = layer.LayerName; //lpb.LayerObj = layer; //lpb.StatusBarColor = 0; //pgb.Size = s; //pgb.Anchor = AnchorStyles.Left | AnchorStyles.Right; //pgb.OnArrowUpClicked += LayerControl_ArrowUpClicked; //pgb.OnArrowDownClicked += LayerControl_ArrowDownClicked; //pgb.OnDoubleClicked += LayerControl_DoubleClicked; //pgb.OnCancelClicked += LayerControl_CancelClicked; this._layers.Add(lpb); i++; //this.flowLayoutPanel1.Controls.Add(pgb); } lpbDotrix.Parent = lpbFace; lpbTeapot.Parent = lpbFace; lpbFace.Parent = pictureBox1; //Draw_HologramBorder(numFrameGroupWidth.Value, numFrameGroupHeight.Value); Draw_HologramBorder(10, 10); } } } private void ScrollAdjust() { //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 frmChildProject_Resize(object sender, EventArgs e) { ScrollAdjust(); } //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); //} } }