private void SelectDetailArea(RubberbandControl p) { SelectedDetailArea = p.DetailArea; textBoxDetailName.Text = SelectedDetailArea.Name; numericUpDownWidth.Value = SelectedDetailArea.Crop.Width; numericUpDownHeight.Value = SelectedDetailArea.Crop.Height; }
private void AddNewRubberbandOnLeftClick(object sender, MouseEventArgs e) { if (e.Button != MouseButtons.Left || Photo == null) { return; } // initial size and position of the detail area var crop = new Rectangle(_pbt.ToImageCoords(e.Location), defaultCropSize); var newDetail = new DetailArea() { Name = "area" + _detailControls.Count, Crop = crop }; Photo.Project.DetailAreas.Add(newDetail); var p = new RubberbandControl() { Location = e.Location, Size = _pbt.ToScreenCoords(defaultCropSize), DetailArea = newDetail }; AddRubberbandControl(p); }
/// <summary> /// Shows the preview for the specified image (selected in the project window) /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The e.</param> public void ShowPreview(object sender, PhotoSelectedEvent e) { Photo = e.Photo; pictureBox1.Image = Photo.Image; this.Text = "Details: " + Photo.BaseFilename; // reset / initialize rubber band controls _detailControls.ForEach(RemoveRubberbandControl); _detailControls.Clear(); foreach (var detailArea in Photo.Project.DetailAreas) { var r = _pbt.ToScreenCoords(detailArea.Crop); var p = new RubberbandControl() { Location = r.Location, Size = r.Size, DetailArea = detailArea }; AddRubberbandControl(p); } }
private void RemoveRubberbandControl(RubberbandControl p) { Controls.Remove(p); p.DetailArea = null; // release propery listener p.Dispose(); }
private void DeleteDetail(RubberbandControl p) { Photo.Project.DetailAreas.Remove(p.DetailArea); RemoveRubberbandControl(p); _detailControls.Remove(p); }
private void AddRubberbandControl(RubberbandControl p) { pictureBox1.Controls.Add(p); // move new detail control to front so that it appears on top (z-order) pictureBox1.Controls.SetChildIndex(p, 0); // update image coordinates after move/resize operation p.RubberbandMoved += UpdateRubberbandCoordinatesMove; p.RubberbandSizeChanged += UpdateRubberbandCoordinates; // show current detail in editor bar p.MouseClick += SelectDetailArea; p.SizeChanged += SelectDetailArea; p.RubberbandMoved += SelectDetailArea; p.RubberbandSizeChanged += SelectDetailArea; // set coordinate translation methods p.Transform = _pbt; _detailControls.Add(p); // context menu var deleteCommand = new ToolStripMenuItem("Delete"); var renameCommand = new ToolStripMenuItem("Rename ..."); var previewCommand = new ToolStripMenuItem("Preview 1:1"); var contextMenu = new ContextMenuStrip(); contextMenu.Items.Add(deleteCommand); contextMenu.Items.Add(renameCommand); contextMenu.Items.Add(previewCommand); // delete DetailArea from project and dispose the rubberband control deleteCommand.Click += (s, ev) => DeleteDetail(p); // open rename dialog renameCommand.Click += (s, ev) => { var dlg = new TextInputMessage() { InputText = p.DetailArea.Name, Text = "Detail Area Name" }; if (dlg.ShowDialog(this) == DialogResult.OK) { p.DetailArea.Name = dlg.InputText; toolTip.SetToolTip(p, p.DetailArea.Name); } }; // create 100% preview of this area previewCommand.Click += (s, ev) => { var pimg = pictureBox1.Image; var img = ImageConverter.Crop(pimg, p.DetailArea.Crop); new ImagePreview(img).Show(this); }; p.ContextMenuStrip = contextMenu; // tool tip toolTip.SetToolTip(p, p.DetailArea.Name); }