Esempio n. 1
0
 private void SelectDetailArea(RubberbandControl p)
 {
     SelectedDetailArea        = p.DetailArea;
     textBoxDetailName.Text    = SelectedDetailArea.Name;
     numericUpDownWidth.Value  = SelectedDetailArea.Crop.Width;
     numericUpDownHeight.Value = SelectedDetailArea.Crop.Height;
 }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        /// <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);
            }
        }
Esempio n. 4
0
 private void RemoveRubberbandControl(RubberbandControl p)
 {
     Controls.Remove(p);
     p.DetailArea = null; // release propery listener
     p.Dispose();
 }
Esempio n. 5
0
 private void DeleteDetail(RubberbandControl p)
 {
     Photo.Project.DetailAreas.Remove(p.DetailArea);
     RemoveRubberbandControl(p);
     _detailControls.Remove(p);
 }
Esempio n. 6
0
        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);
        }