Пример #1
0
        private void VixenPreviewControl_MouseUp(object sender, MouseEventArgs e)
        {
            HighlightedElements.Clear();
            if (_mouseCaptured)
            {
                if (_currentTool != Tools.Select)
                {
                    // If control is pressed, deselect the shape and immediately allow drawing another shape
                    if ((Control.ModifierKeys & Keys.Control) != 0)
                    {
                        _selectedDisplayItem.Shape.MouseUp(sender, e);
                        DeSelectSelectedDisplayItem();
                    }
                    else
                    {
                        _currentTool = Tools.Select;
                    }
                }

                if (_selectedDisplayItem != null)
                {
                    _selectedDisplayItem.Shape.MouseUp(sender, e);
                    OnSelectDisplayItem(this, _selectedDisplayItem);
                }
                // Ok, if this is true, we've got a rubber band and something is selected, now what?
                else if (SelectedDisplayItems.Count > 0)
                {
                    // If we only have one item, just select it and go on.
                    if (SelectedDisplayItems.Count == 1)
                    {
                        _selectedDisplayItem = SelectedDisplayItems[0];
                        _selectedDisplayItem.Shape.Select(true);
                        OnSelectDisplayItem(this, _selectedDisplayItem);
                        SelectedDisplayItems.Clear();
                    }
                    else
                    {
                        // Do nothing...
                    }
                }
            }
            ResetMouse();
        }
Пример #2
0
        /// <summary>
        /// This is used in edit mode only!!
        /// Need to make it go away so we only have one render engine
        /// </summary>
        public void RenderInForeground()
        {
            renderTimer.Reset();
            renderTimer.Start();

            if (_background != null)
            {
                //FastPixel fp = new FastPixel(_background.Width, _background.Height);
                FastPixel fp      = new FastPixel(new Bitmap(_alphaBackground));
                Bitmap    floodBG = null;
                if (UseFloods)
                {
                    floodBG = PreviewTools.Copy32BPPBitmapSafe(_blankAlphaBackground);
                    //floodBG = new Bitmap(_blankAlphaBackground);
                    //floodBG = new Bitmap(_blankAlphaBackground.Width, _blankAlphaBackground.Height);
                    //Graphics g = Graphics.FromImage(floodBG);
                    //g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
                    //SolidBrush brush = new SolidBrush(Color.FromArgb(50, 255, 0, 0));
                    //g.FillEllipse(brush, new Rectangle(200, 200, 300, 300));
                    //g.DrawImage(_blankAlphaBackground, 0, 0);
                    //g.FillRectangle(_backgroundBrush, new Rectangle(0, 0, _blankAlphaBackground.Width, _blankAlphaBackground.Height));
                }
                fp.Lock();
                foreach (DisplayItem displayItem in DisplayItems)
                {
                    //if (UseFloods && displayItem.Shape.StringType == PreviewBaseShape.StringTypes.Flood)
                    //{
                    //    displayItem.Shape.Draw(floodBG, _editMode, null);
                    //}
                    //else
                    //{
                    if (_editMode)
                    {
                        displayItem.Draw(fp, true, HighlightedElements, SelectedDisplayItems.Contains(displayItem));
                    }
                    else
                    {
                        displayItem.Draw(fp, false, null, false);
                    }
                    //}
                }
                fp.Unlock(true);

                // Finally, are we drawing a banded rectangle?
                if (_mouseCaptured && _selectedDisplayItem == null)
                {
                    Graphics g = Graphics.FromImage(fp.Bitmap);
                    g.DrawRectangle(Pens.White, _bandRect);
                }

                //lock (renderLock)
                //{
                // First, draw our background image opaque
                bufferedGraphics.Graphics.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
                //bufferedGraphics.Graphics.DrawImage(_background, 0, 0, _background.Width, _background.Height);
                if (UseFloods)
                {
                    bufferedGraphics.Graphics.DrawImage(_background, 0, 0, _background.Width, _background.Height);
                }
                else
                {
                    //bufferedGraphics.Graphics.DrawImage(_alphaBackground, 0, 0, _alphaBackground.Width, _alphaBackground.Height);
                }

                //bufferedGraphics.Graphics.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver;
                if (UseFloods)
                {
                    bufferedGraphics.Graphics.DrawImage(floodBG, 0, 0, _blankAlphaBackground.Width, _blankAlphaBackground.Height);
                }
                // Now, draw our "pixel" image using alpha blending
                bufferedGraphics.Graphics.DrawImage(fp.Bitmap, 0, 0, fp.Width, fp.Height);
                //}
            }

            bufferedGraphics.Render(Graphics.FromHwnd(this.Handle));
            renderTimer.Stop();
            lastRenderUpdateTime = renderTimer.ElapsedMilliseconds;
        }
Пример #3
0
        private void VixenPreviewControl_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Delete)
            {
                Delete();
            }
            // Copy
            else if (e.KeyCode == Keys.C && e.Modifiers == Keys.Control)
            {
                Copy();
            }
            else if (e.KeyCode == Keys.X && e.Modifiers == Keys.Control)
            {
                Cut();
            }
            else if (e.KeyCode == Keys.V && e.Modifiers == Keys.Control)
            {
                if (Paste())
                {
                    // move the prop to the mouse position
                    Point moveToPoint = PointToClient(MousePosition);
                    _selectedDisplayItem.Shape.MoveTo(moveToPoint.X, moveToPoint.Y);

                    StartMove(moveToPoint.X, moveToPoint.Y);
                }
            }
            else if (e.KeyCode == Keys.Up)
            {
                if (_selectedDisplayItem != null)
                {
                    _selectedDisplayItem.Shape.Nudge(0, -1);
                }
                else if (SelectedDisplayItems.Count > 0)
                {
                    foreach (DisplayItem item in DisplayItems)
                    {
                        if (SelectedDisplayItems.Contains(item))
                        {
                            item.Shape.Nudge(0, -1);
                        }
                    }
                }
            }
            else if (e.KeyCode == Keys.Down)
            {
                if (_selectedDisplayItem != null)
                {
                    _selectedDisplayItem.Shape.Nudge(0, 1);
                }
                else if (SelectedDisplayItems.Count > 0)
                {
                    foreach (DisplayItem item in DisplayItems)
                    {
                        if (SelectedDisplayItems.Contains(item))
                        {
                            item.Shape.Nudge(0, 1);
                        }
                    }
                }
            }
            else if (e.KeyCode == Keys.Right)
            {
                if (_selectedDisplayItem != null)
                {
                    _selectedDisplayItem.Shape.Nudge(1, 0);
                }
                else if (SelectedDisplayItems.Count > 0)
                {
                    foreach (DisplayItem item in DisplayItems)
                    {
                        if (SelectedDisplayItems.Contains(item))
                        {
                            item.Shape.Nudge(1, 0);
                        }
                    }
                }
            }
            else if (e.KeyCode == Keys.Left)
            {
                if (_selectedDisplayItem != null)
                {
                    _selectedDisplayItem.Shape.Nudge(-1, 0);
                }
                else if (SelectedDisplayItems.Count > 0)
                {
                    foreach (DisplayItem item in DisplayItems)
                    {
                        if (SelectedDisplayItems.Contains(item))
                        {
                            item.Shape.Nudge(-1, 0);
                        }
                    }
                }
            }
            else if (e.KeyCode == Keys.Escape)
            {
                // not sure how to handle this yet...
                // would work fine if we were always live moving.
                // if we are standard mving, we don't want to delete the item when escape is pressed!

                //if (_mouseCaptured) {
                //Capture = false;
                //_mouseCaptured = false;
                //DisplayItems.Remove(_selectedDisplayItem);
                //DeSelectSelectedDisplayItem();
            }
        }
Пример #4
0
        private void VixenPreviewControl_MouseMove(object sender, MouseEventArgs e)
        {
            if (_editMode)
            {
                PreviewPoint point = new PreviewPoint(e.X, e.Y);

                dragCurrent.X = e.X;
                dragCurrent.Y = e.Y;
                changeX       = e.X - dragStart.X;
                changeY       = e.Y - dragStart.Y;

                // Are we moving a single display item?
                if (_mouseCaptured && _selectedDisplayItem != null)
                {
                    _selectedDisplayItem.Shape.MouseMove(dragCurrent.X, dragCurrent.Y, changeX, changeY);
                }
                // If we get here, we're drwing a rubber band
                else if (_banding)
                {
                    _bandRect.Location = dragStart;
                    _bandRect.Width    = changeX;
                    _bandRect.Height   = changeY;
                    foreach (DisplayItem item in DisplayItems)
                    {
                        if (item.Shape.ShapeInRect(_bandRect))
                        {
                            if (!SelectedDisplayItems.Contains(item))
                            {
                                SelectedDisplayItems.Add(item);
                            }
                        }
                        else if (SelectedDisplayItems.Contains(item))
                        {
                            SelectedDisplayItems.Remove(item);
                        }
                    }
                }
                // Are we moving a group of display items?
                else if (_mouseCaptured && _selectedDisplayItem == null && SelectedDisplayItems.Count > 1)
                {
                    foreach (DisplayItem item in SelectedDisplayItems)
                    {
                        item.Shape.MouseMove(dragCurrent.X, dragCurrent.Y, changeX, changeY);
                    }
                }
                else
                {
                    if (_selectedDisplayItem != null)
                    {
                        PreviewPoint selectPoint = _selectedDisplayItem.Shape.PointInSelectPoint(point);
                        if (selectPoint != null)
                        {
                            Cursor.Current = Cursors.Cross;
                        }
                        else if (_selectedDisplayItem.Shape.PointInShape(point))
                        {
                            Cursor.Current = Cursors.SizeAll;
                        }
                        else
                        {
                            Cursor.Current = Cursors.Default;
                        }
                    }
                    else if (SelectedDisplayItems.Count > 0)
                    {
                        if (MouseOverSelectedDisplayItems(e.X, e.Y))
                        {
                            Cursor.Current = Cursors.SizeAll;
                        }
                    }
                }
            }
        }
Пример #5
0
        private void VixenPreviewControl_MouseDown(object sender, MouseEventArgs e)
        {
            if (_editMode)
            {
                if (e.Button == System.Windows.Forms.MouseButtons.Left)
                {
                    PreviewPoint point = new PreviewPoint(e.X, e.Y);

                    if (_currentTool == Tools.Select)
                    {
                        // Is there a single dislay item selected?
                        if (_selectedDisplayItem != null)
                        {
                            //if (_selectedDisplayItem.GetType().ToString().Contains("PreviewCustom"))
                            //{
                            //    Console.WriteLine(_selectedDisplayItem.GetType().ToString());
                            //}
                            // Lets see if we've got a drag point.
                            PreviewPoint selectedPoint = _selectedDisplayItem.Shape.PointInSelectPoint(point);
                            if (selectedPoint != null)
                            {
                                dragStart.X = e.X;
                                dragStart.Y = e.Y;
                                _selectedDisplayItem.Shape.SetSelectPoint(selectedPoint);
                                Capture        = true;
                                _mouseCaptured = true;
                            }
                            // If we're not resizing, see if we're moving a single shape
                            else if (_selectedDisplayItem.Shape.PointInShape(point))
                            {
                                StartMove(e.X, e.Y);
                            }
                            // If we get here, we're outside the shape, deselect
                            else
                            {
                                DeSelectSelectedDisplayItem();
                            }
                        }
                        // Are there multiple items selected?
                        // If so, we're moving, can't resize them...
                        else if (SelectedDisplayItems.Count > 1)
                        {
                            if (MouseOverSelectedDisplayItems(e.X, e.Y))
                            {
                                //_selectedDisplayItem.Shape.SetSelectPoint(null);
                                StartMove(e.X, e.Y);
                            }
                            else
                            {
                                SelectedDisplayItems.Clear();
                            }
                        }

                        if (!_mouseCaptured)
                        {
                            _selectedDisplayItem = DisplayItemAtPoint(point);
                            if (_selectedDisplayItem != null)
                            {
                                _selectedDisplayItem.Shape.Select(true);
                                OnSelectDisplayItem(this, _selectedDisplayItem);
                            }
                        }

                        // If we get this far, and we've got nothing selected, we're drawing a rubber band!
                        if (_selectedDisplayItem == null && SelectedDisplayItems.Count == 0)
                        {
                            // Capture the mouse in case we want to draw a rubber band
                            dragStart.X    = e.X;
                            dragStart.Y    = e.Y;
                            Capture        = true;
                            _mouseCaptured = true;
                            SelectedDisplayItems.Clear();
                            _bandRect.Width = 0; _bandRect.Height = 0;
                            _banding        = true;
                        }
                    }
                    // If we're not Selecting items, we're drawing them
                    else
                    {
                        DisplayItem newDisplayItem = null;
                        if (_currentTool == Tools.String)
                        {
                            newDisplayItem       = new DisplayItem();
                            newDisplayItem.Shape = new PreviewLine(new PreviewPoint(e.X, e.Y), new PreviewPoint(e.X, e.Y), 50, elementsForm.SelectedNode);
                        }
                        else if (_currentTool == Tools.Arch)
                        {
                            newDisplayItem       = new DisplayItem();
                            newDisplayItem.Shape = new PreviewArch(new PreviewPoint(e.X, e.Y), elementsForm.SelectedNode);
                        }
                        else if (_currentTool == Tools.Rectangle)
                        {
                            newDisplayItem       = new DisplayItem();
                            newDisplayItem.Shape = new PreviewRectangle(new PreviewPoint(e.X, e.Y), elementsForm.SelectedNode);
                        }
                        else if (_currentTool == Tools.Single)
                        {
                            newDisplayItem       = new DisplayItem();
                            newDisplayItem.Shape = new PreviewSingle(new PreviewPoint(e.X, e.Y), elementsForm.SelectedNode);
                        }
                        else if (_currentTool == Tools.Ellipse)
                        {
                            newDisplayItem       = new DisplayItem();
                            newDisplayItem.Shape = new PreviewEllipse(new PreviewPoint(e.X, e.Y), 50, elementsForm.SelectedNode);
                        }
                        else if (_currentTool == Tools.Triangle)
                        {
                            newDisplayItem       = new DisplayItem();
                            newDisplayItem.Shape = new PreviewTriangle(new PreviewPoint(e.X, e.Y), elementsForm.SelectedNode);
                        }
                        else if (_currentTool == Tools.Net)
                        {
                            newDisplayItem       = new DisplayItem();
                            newDisplayItem.Shape = new PreviewNet(new PreviewPoint(e.X, e.Y), elementsForm.SelectedNode);
                        }
                        else if (_currentTool == Tools.Cane)
                        {
                            newDisplayItem       = new DisplayItem();
                            newDisplayItem.Shape = new PreviewCane(new PreviewPoint(e.X, e.Y), elementsForm.SelectedNode);
                        }
                        else if (_currentTool == Tools.Star)
                        {
                            newDisplayItem       = new DisplayItem();
                            newDisplayItem.Shape = new PreviewStar(new PreviewPoint(e.X, e.Y), elementsForm.SelectedNode);
                        }
                        else if (_currentTool == Tools.Flood)
                        {
                            newDisplayItem       = new DisplayItem();
                            newDisplayItem.Shape = new PreviewFlood(new PreviewPoint(e.X, e.Y), elementsForm.SelectedNode);
                        }
                        else if (_currentTool == Tools.MegaTree)
                        {
                            newDisplayItem       = new DisplayItem();
                            newDisplayItem.Shape = new PreviewMegaTree(new PreviewPoint(e.X, e.Y), elementsForm.SelectedNode);
                        }

                        // Now add the newely created display item to the screen.
                        if (newDisplayItem != null)
                        {
                            AddDisplayItem(newDisplayItem);
                            _selectedDisplayItem = newDisplayItem;
                            _selectedDisplayItem.Shape.PixelSize = 3;
                            _selectedDisplayItem.Shape.Select(true);
                            _selectedDisplayItem.Shape.SelectDefaultSelectPoint();
                            dragStart.X    = e.X;
                            dragStart.Y    = e.Y;
                            Capture        = true;
                            _mouseCaptured = true;
                        }
                    }
                }
                else if (e.Button == System.Windows.Forms.MouseButtons.Right)
                {
                }
            }
        }