예제 #1
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);
        }