Exemplo n.º 1
0
        public static void 直线(MouseStateType mouseType, Point targetPoint, Color colorType, ref Bitmap sourceBitmap, ref Bitmap temporyImage)
        {
            switch (mouseType)
            {
            case MouseStateType.MouseDown:
                m_TempImageUsed = true;
                m_PreviousPoint = targetPoint;
                m_MouseState    = MouseStateType.MouseDown;
                break;

            case MouseStateType.MouseMove:
                if (MouseStateType.MouseDown == m_MouseState)
                {
                    Graphics.FromImage(temporyImage).Clear(Color.Empty);
                    Graphics.FromImage(temporyImage).DrawLine(new Pen(colorType, (int)m_ToolSize), m_PreviousPoint, targetPoint);
                }
                break;

            case MouseStateType.MouseUp:
            {
                m_TempImageUsed = false;
                Graphics.FromImage(sourceBitmap).DrawLine(new Pen(colorType, (int)m_ToolSize), m_PreviousPoint, targetPoint);
                m_PreviousPoint = Point.Empty;
                m_MouseState    = MouseStateType.MouseUp;
                break;
            }
            }
        }
Exemplo n.º 2
0
        /*
         * static void 裁剪()
         * {
         *  switch()
         *  {
         *
         *  }
         * }
         */

        public static void 橡皮(MouseStateType mouseType, Point targetPoint, Color colorType, ref Bitmap sourceBitmap)
        {
            int iSize = 2 * (int)m_ToolSize + 1;

            switch (mouseType)
            {
            case MouseStateType.MouseDown:
            {
                Graphics.FromImage(sourceBitmap).FillRectangle(new SolidBrush(colorType), targetPoint.X - iSize, targetPoint.Y - iSize, iSize * 2, iSize * 2);
                m_MouseState = MouseStateType.MouseDown;
                break;
            }

            case MouseStateType.MouseMove:
                if (MouseStateType.MouseDown == m_MouseState)
                {
                    Graphics.FromImage(sourceBitmap).FillRectangle(new SolidBrush(colorType), targetPoint.X - iSize, targetPoint.Y - iSize, iSize * 2, iSize * 2);
                }
                break;

            case MouseStateType.MouseUp:
                m_MouseState = MouseStateType.MouseUp;
                break;
            }
        }
Exemplo n.º 3
0
        public static Color 取色(MouseStateType mouseType, Point targetPoint, ref Bitmap sourceBitmap)
        {
            Color returnColor = Color.Empty;

            switch (mouseType)
            {
            case MouseStateType.MouseDown:
                if (sourceBitmap.Width > targetPoint.X && 0 < targetPoint.X && sourceBitmap.Height > targetPoint.Y && 0 < targetPoint.Y)
                {
                    returnColor = sourceBitmap.GetPixel(targetPoint.X, targetPoint.Y);
                }
                m_MouseState = MouseStateType.MouseDown;
                break;

            case MouseStateType.MouseMove:
                if (MouseStateType.MouseDown == m_MouseState && sourceBitmap.Width > targetPoint.X && 0 < targetPoint.X && sourceBitmap.Height > targetPoint.Y && 0 < targetPoint.Y)
                {
                    returnColor = sourceBitmap.GetPixel(targetPoint.X, targetPoint.Y);
                }
                break;

            case MouseStateType.MouseUp:
                if (sourceBitmap.Width > targetPoint.X && 0 < targetPoint.X && sourceBitmap.Height > targetPoint.Y && 0 < targetPoint.Y)
                {
                    returnColor = sourceBitmap.GetPixel(targetPoint.X, targetPoint.Y);
                }
                m_MouseState = MouseStateType.MouseUp;
                break;
            }
            return(returnColor);
        }
Exemplo n.º 4
0
        public static void 圆角矩形(MouseStateType mouseType, Point targetPoint, Color colorType, ref Bitmap sourceBitmap, ref Bitmap temporyImage)
        {
            switch (mouseType)
            {
            case MouseStateType.MouseDown:
                m_TempImageUsed = true;
                m_PreviousPoint = targetPoint;
                m_MouseState    = MouseStateType.MouseDown;
                break;

            case MouseStateType.MouseMove:
                if (MouseStateType.MouseDown == m_MouseState)
                {
                    Point staticPoint = new Point((Tools.m_PreviousPoint.X < targetPoint.X) ? Tools.m_PreviousPoint.X : targetPoint.X, (Tools.m_PreviousPoint.Y < targetPoint.Y) ? Tools.m_PreviousPoint.Y : targetPoint.Y);
                    targetPoint.X = Math.Abs(targetPoint.X - Tools.m_PreviousPoint.X);
                    targetPoint.Y = Math.Abs(targetPoint.Y - Tools.m_PreviousPoint.Y);
                    Graphics.FromImage(temporyImage).Clear(Color.Empty);
                    switch (m_ToolSize)
                    {
                    case ToolSize.Size_1:
                        DrawRoundRectangle(Graphics.FromImage(temporyImage), colorType, new Rectangle(staticPoint.X, staticPoint.Y, targetPoint.X, targetPoint.Y), 8);
                        break;

                    case ToolSize.Size_2:
                        DrawRoundRectangle(Graphics.FromImage(temporyImage), colorType, new Rectangle(staticPoint.X, staticPoint.Y, targetPoint.X, targetPoint.Y), 8, true, true);
                        break;

                    case ToolSize.Size_3:
                        DrawRoundRectangle(Graphics.FromImage(temporyImage), colorType, new Rectangle(staticPoint.X, staticPoint.Y, targetPoint.X, targetPoint.Y), 8, true, false);
                        break;
                    }
                }
                break;

            case MouseStateType.MouseUp:
            {
                m_TempImageUsed = false;
                Point staticPoint = new Point((Tools.m_PreviousPoint.X < targetPoint.X) ? Tools.m_PreviousPoint.X : targetPoint.X, (Tools.m_PreviousPoint.Y < targetPoint.Y) ? Tools.m_PreviousPoint.Y : targetPoint.Y);
                targetPoint.X = Math.Abs(targetPoint.X - Tools.m_PreviousPoint.X);
                targetPoint.Y = Math.Abs(targetPoint.Y - Tools.m_PreviousPoint.Y);
                switch (m_ToolSize)
                {
                case ToolSize.Size_1:
                    DrawRoundRectangle(Graphics.FromImage(sourceBitmap), colorType, new Rectangle(staticPoint.X, staticPoint.Y, targetPoint.X, targetPoint.Y), 8);
                    break;

                case ToolSize.Size_2:
                    DrawRoundRectangle(Graphics.FromImage(sourceBitmap), colorType, new Rectangle(staticPoint.X, staticPoint.Y, targetPoint.X, targetPoint.Y), 8, true, true);
                    break;

                case ToolSize.Size_3:
                    DrawRoundRectangle(Graphics.FromImage(sourceBitmap), colorType, new Rectangle(staticPoint.X, staticPoint.Y, targetPoint.X, targetPoint.Y), 8, true, false);
                    break;
                }
                m_PreviousPoint = Point.Empty;
                m_MouseState    = MouseStateType.MouseUp;
                break;
            }
            }
        }
Exemplo n.º 5
0
        /*
         *      class 选定
         *      {
         *
         *      }
         *
         *      class 填充
         *      {
         *
         *      }
         *
         *      class 放大镜
         *      {
         *
         *      }
         */

        public static void 刷子(MouseStateType mouseType, Point targetPoint, Color colorType, ref Bitmap sourceBitmap, ref Bitmap temporyImage)
        {
            switch (mouseType)
            {
            case MouseStateType.MouseDown:
                m_TempImageUsed = true;
                m_PreviousPoint = targetPoint;
                m_PointList.Add(m_PreviousPoint);
                m_MouseState = MouseStateType.MouseDown;
                break;

            case MouseStateType.MouseMove:
                if (MouseStateType.MouseDown == m_MouseState)
                {
                    m_PreviousPoint = targetPoint;
                    m_PointList.Add(m_PreviousPoint);
                    DrawPolygon(Graphics.FromImage(temporyImage), colorType, false, false, false, 10);
                    m_TempImageUsed = true;
                }
                break;

            case MouseStateType.MouseUp:
                m_TempImageUsed = false;
                if (1 <= m_PointList.Count)
                {
                    m_PointList.Add(targetPoint);
                    DrawPolygon(Graphics.FromImage(sourceBitmap), colorType, false, false, false, 10);
                }
                m_PointList.Clear();
                Graphics.FromImage(temporyImage).Clear(Color.Empty);
                m_PreviousPoint = Point.Empty;
                m_MouseState    = MouseStateType.MouseUp;
                break;
            }
        }
Exemplo n.º 6
0
        public ObjectSlot(int index, ObjectSlotsManager manager, ObjectSlotManagerGui gui, Size size)
        {
            Index    = index;
            _manager = manager;
            _gui     = gui;
            Size     = size;
            Font     = new Font(FontFamily.GenericSansSerif, 6);

            this.MouseDown  += OnDrag;
            this.MouseUp    += (s, e) => { MouseState = MouseStateType.None; UpdateColors(); };
            this.MouseEnter += (s, e) =>
            {
                ObjectSlotsConfig.HoverObjectSlot = this;
                MouseState = MouseStateType.Over;
                UpdateColors();
            };
            this.MouseLeave += (s, e) =>
            {
                ObjectSlotsConfig.HoverObjectSlot = null;
                MouseState = MouseStateType.None;
                UpdateColors();
            };
            this.Cursor         = Cursors.Hand;
            this.DoubleBuffered = true;

            SetUpContextMenuStrip();
        }
Exemplo n.º 7
0
        private static Random m_Random            = new Random();  //随机数发生器

        public static void Init()
        {
            m_ToolSize      = ToolSize.Size_1;
            m_TempImageUsed = false;
            m_MouseState    = MouseStateType.MouseUp;
            m_PreviousPoint = Point.Empty;
            m_PointList.Clear();
        }
Exemplo n.º 8
0
 private void OnDrag(object sender, MouseEventArgs e)
 {
     if (e.Button != MouseButtons.Left)
     {
         return;
     }
     MouseState = MouseStateType.Down;
     UpdateColors();
     Refresh();
 }
Exemplo n.º 9
0
        private void OnDrag(object sender, MouseEventArgs e)
        {
            OnClick(new EventArgs());

            MouseState = MouseStateType.Down;
            UpdateColors();
            Refresh();

            // Start the drag and drop but setting the object slot index in Drag and Drop data
            var objectAddress = Address;
            var dropAction    = new DropAction(DropAction.ActionType.Object, objectAddress);

            DoDragDrop(dropAction, DragDropEffects.All);
        }
Exemplo n.º 10
0
        public static void 多边形(MouseStateType mouseType, Point targetPoint, Color colorType, ref Bitmap sourceBitmap, ref Bitmap temporyImage)
        {
            switch (mouseType)
            {
            case MouseStateType.MouseDown:
                if (1 <= m_PointList.Count)
                {
                    Graphics.FromImage(temporyImage).DrawLine(new Pen(colorType, 1), targetPoint, m_PointList[m_PointList.Count - 1]);
                }
                m_PreviousPoint = targetPoint;
                m_MouseState    = MouseStateType.MouseDown;
                break;

            case MouseStateType.MouseMove:
                if (MouseStateType.MouseDown == m_MouseState)
                {
                    if (!m_TempImageUsed)
                    {
                        m_TempImageUsed = true;
                        if (0 == Tools.m_PointList.Count)
                        {
                            Tools.m_PointList.Add(m_PreviousPoint);
                        }
                    }
                    Graphics.FromImage(temporyImage).Clear(Color.Empty);
                    if (1 < m_PointList.Count)
                    {
                        Graphics.FromImage(temporyImage).DrawLines(new Pen(colorType, 1), m_PointList.ToArray());
                    }
                    Graphics.FromImage(temporyImage).DrawLine(new Pen(colorType, 1), targetPoint, m_PointList[m_PointList.Count - 1]);
                }
                break;

            case MouseStateType.MouseUp:
                if (1 <= m_PointList.Count)
                {
                    Tools.m_PointList.Add(targetPoint);
                    Graphics.FromImage(temporyImage).DrawLines(new Pen(colorType, 1), m_PointList.ToArray());
                }
                m_PreviousPoint = Point.Empty;
                m_MouseState    = MouseStateType.MouseUp;
                break;
            }
        }
Exemplo n.º 11
0
        public ObjectSlot(int index, ObjectSlotsManager manager, ObjectSlotManagerGui gui, Size size)
        {
            Index    = index;
            _manager = manager;
            _gui     = gui;
            Size     = size;
            Font     = new Font(FontFamily.GenericSansSerif, 6);

            this.AllowDrop   = true;
            this.MouseDown  += OnDrag;
            this.MouseUp    += (s, e) => { MouseState = MouseStateType.None; UpdateColors(); };
            this.MouseEnter += (s, e) => { MouseState = MouseStateType.Over; UpdateColors(); };
            this.MouseLeave += (s, e) => { MouseState = MouseStateType.None; UpdateColors(); };

            this.DragEnter     += OnDragEnter;
            this.DragDrop      += OnDrop;
            this.Cursor         = Cursors.Hand;
            this.DoubleBuffered = true;
        }
Exemplo n.º 12
0
        public static void 文字(MouseStateType mouseType, Point targetPoint, Color colorType, ref Bitmap sourceBitmap, ref System.Windows.Forms.TextBox alphaTextBox)
        {
            switch (mouseType)
            {
            case MouseStateType.MouseDown:
                m_PreviousPoint = targetPoint;
                if (alphaTextBox.Visible)
                {
                    for (int i = 0; i < alphaTextBox.Lines.Length; ++i)
                    {
                        Point newLocation = new Point(alphaTextBox.Location.X, alphaTextBox.Location.Y + i * (alphaTextBox.Font.Height - 5));
                        Graphics.FromImage(sourceBitmap).DrawString(alphaTextBox.Lines[i], alphaTextBox.Font, new SolidBrush(Color.FromArgb(255, alphaTextBox.ForeColor)), newLocation);
                    }
                    //Graphics.FromImage(sourceBitmap).DrawString(alphaTextBox.Text, alphaTextBox.Font, new SolidBrush(Color.FromArgb(255, alphaTextBox.ForeColor)), new Point(alphaTextBox.Location.X, alphaTextBox.Location.Y));
                    alphaTextBox.Text    = "";
                    alphaTextBox.Visible = false;
                }
                else
                {
                    alphaTextBox.Location  = Tools.m_PreviousPoint;
                    alphaTextBox.ForeColor = colorType;
                    alphaTextBox.Font      = new Font(alphaTextBox.Font.FontFamily, 22, alphaTextBox.Font.Style);
                    alphaTextBox.Visible   = true;
                }
                m_MouseState = MouseStateType.MouseDown;
                break;

            case MouseStateType.MouseMove:
                if (MouseStateType.MouseDown == m_MouseState && alphaTextBox.Visible)
                {
                    alphaTextBox.Location = new Point((Tools.m_PreviousPoint.X < targetPoint.X) ? Tools.m_PreviousPoint.X : targetPoint.X, (Tools.m_PreviousPoint.Y < targetPoint.Y) ? Tools.m_PreviousPoint.Y : targetPoint.Y);
                    alphaTextBox.Size     = new Size(Math.Abs(targetPoint.X - Tools.m_PreviousPoint.X), Math.Abs(targetPoint.Y - Tools.m_PreviousPoint.Y));
                }
                break;

            case MouseStateType.MouseUp:
                m_PreviousPoint = Point.Empty;
                m_MouseState    = MouseStateType.MouseUp;
                break;
            }
        }
Exemplo n.º 13
0
        public static void 铅笔(MouseStateType mouseType, Point targetPoint, Color colorType, ref Bitmap sourceBitmap)
        {
            switch (mouseType)
            {
            case MouseStateType.MouseDown:
                m_PreviousPoint = targetPoint;
                m_MouseState    = MouseStateType.MouseDown;
                break;

            case MouseStateType.MouseMove:
                if (MouseStateType.MouseDown == m_MouseState)
                {
                    Graphics.FromImage(sourceBitmap).DrawLine(new Pen(colorType, 1), m_PreviousPoint, targetPoint);
                    m_PreviousPoint = targetPoint;
                }
                break;

            case MouseStateType.MouseUp:
                m_PreviousPoint = Point.Empty;
                m_MouseState    = MouseStateType.MouseUp;
                break;
            }
        }
Exemplo n.º 14
0
        public static void 喷枪(MouseStateType mouseType, Point targetPoint, Color colorType, ref Bitmap sourceBitmap)
        {
            switch (mouseType)
            {
            case MouseStateType.MouseDown:
            {
                m_PreviousPoint = targetPoint;
                m_MouseState    = MouseStateType.MouseDown;
                break;
            }

            case MouseStateType.MouseMove:
                if (MouseStateType.MouseDown == m_MouseState)
                {
                    int iSize = 5 * ((int)m_ToolSize + 1);
                    for (int i = 0; i < 25; ++i)
                    {
                        int x = 0, y = 0;
                        do
                        {
                            x = m_Random.Next(-iSize, iSize);
                            y = m_Random.Next(-iSize, iSize);
                        }while (x * x + y * y > iSize * iSize);
                        int oriX = Tools.m_PreviousPoint.X + x, oriY = Tools.m_PreviousPoint.Y + y;
                        if (0 < oriX && oriX < sourceBitmap.Width && 0 < oriY && oriY < sourceBitmap.Height)
                        {
                            sourceBitmap.SetPixel(Tools.m_PreviousPoint.X + x, Tools.m_PreviousPoint.Y + y, colorType);
                        }
                    }
                }
                break;

            case MouseStateType.MouseUp:
                m_MouseState = MouseStateType.MouseUp;
                break;
            }
        }
Exemplo n.º 15
0
 private void OnDrag(object sender, MouseEventArgs e)
 {
     MouseState = MouseStateType.Down;
     UpdateColors();
     Refresh();
 }
Exemplo n.º 16
0
        //real参数:为了在切换工具后及时将临时曲线绘制并销毁点数组
        public static void 曲线(MouseStateType mouseType, Point targetPoint, Color colorType, Bitmap sourceBitmap, Bitmap temporyImage, bool real = false)
        {
            switch (mouseType)
            {
            case MouseStateType.MouseDown:
                m_TempImageUsed = true;
                if (0 == m_PointList.Count)
                {
                    m_PointList.Add(targetPoint);
                }
                m_MouseState = MouseStateType.MouseDown;
                break;

            case MouseStateType.MouseMove:
                if (MouseStateType.MouseDown == m_MouseState)
                {
                    Graphics.FromImage(temporyImage).Clear(Color.Empty);
                    switch (m_PointList.Count)
                    {
                    case 1:
                        Graphics.FromImage(temporyImage).DrawLine(new Pen(colorType, (int)m_ToolSize), m_PointList[0], targetPoint);
                        break;

                    case 2:
                        Graphics.FromImage(temporyImage).DrawBezier(new Pen(colorType, (int)m_ToolSize), m_PointList[1], targetPoint, m_PointList[0], m_PointList[0]);
                        break;

                    case 3:
                        Graphics.FromImage(temporyImage).DrawBezier(new Pen(colorType, (int)m_ToolSize), m_PointList[1], targetPoint, m_PointList[2], m_PointList[0]);
                        break;
                    }
                }
                break;

            case MouseStateType.MouseUp:
            {
                if (!real)
                {
                    if (m_PointList.Count < 3)
                    {
                        m_PointList.Add(targetPoint);
                    }
                    else
                    {
                        m_TempImageUsed = false;
                        Graphics.FromImage(sourceBitmap).DrawBezier(new Pen(colorType, (int)m_ToolSize), m_PointList[1], targetPoint, m_PointList[2], m_PointList[0]);
                        m_PointList.Clear();
                    }
                }
                else
                {
                    m_TempImageUsed = false;
                    switch (m_PointList.Count)
                    {
                    case 1:
                        break;

                    case 2:
                        Graphics.FromImage(sourceBitmap).DrawLine(new Pen(colorType, (int)m_ToolSize), m_PointList[0], m_PointList[1]);
                        break;

                    case 3:
                        Graphics.FromImage(sourceBitmap).DrawBezier(new Pen(colorType, (int)m_ToolSize), m_PointList[1], m_PointList[2], m_PointList[0], m_PointList[0]);
                        break;
                    }
                    m_PointList.Clear();
                }
                m_MouseState = MouseStateType.MouseUp;
                break;
            }
            }
        }
Exemplo n.º 17
0
        public static void 椭圆(MouseStateType mouseType, Point targetPoint, Color colorType, ref Bitmap sourceBitmap, ref Bitmap temporyImage)
        {
            switch (mouseType)
            {
            case MouseStateType.MouseDown:
                m_TempImageUsed = true;
                m_PreviousPoint = targetPoint;
                m_MouseState    = MouseStateType.MouseDown;
                break;

            case MouseStateType.MouseMove:
                if (MouseStateType.MouseDown == m_MouseState)
                {
                    Point staticPoint = new Point((Tools.m_PreviousPoint.X < targetPoint.X) ? Tools.m_PreviousPoint.X : targetPoint.X, (Tools.m_PreviousPoint.Y < targetPoint.Y) ? Tools.m_PreviousPoint.Y : targetPoint.Y);
                    targetPoint.X = Math.Abs(targetPoint.X - Tools.m_PreviousPoint.X);
                    targetPoint.Y = Math.Abs(targetPoint.Y - Tools.m_PreviousPoint.Y);
                    Graphics.FromImage(temporyImage).Clear(Color.Empty);
                    switch (m_ToolSize)
                    {
                    case ToolSize.Size_1:
                        Graphics.FromImage(temporyImage).DrawEllipse(new Pen(colorType, 1), staticPoint.X, staticPoint.Y, targetPoint.X, targetPoint.Y);
                        break;

                    case ToolSize.Size_2:
                        Graphics.FromImage(temporyImage).FillEllipse(Brushes.White, staticPoint.X, staticPoint.Y, targetPoint.X, targetPoint.Y);
                        Graphics.FromImage(temporyImage).DrawEllipse(new Pen(colorType, 1), staticPoint.X, staticPoint.Y, targetPoint.X, targetPoint.Y);
                        break;

                    case ToolSize.Size_3:
                        Graphics.FromImage(temporyImage).FillEllipse(new SolidBrush(colorType), staticPoint.X, staticPoint.Y, targetPoint.X, targetPoint.Y);
                        break;
                    }
                }
                break;

            case MouseStateType.MouseUp:
            {
                m_TempImageUsed = false;
                Point staticPoint = new Point((Tools.m_PreviousPoint.X < targetPoint.X) ? Tools.m_PreviousPoint.X : targetPoint.X, (Tools.m_PreviousPoint.Y < targetPoint.Y) ? Tools.m_PreviousPoint.Y : targetPoint.Y);
                targetPoint.X = Math.Abs(targetPoint.X - Tools.m_PreviousPoint.X);
                targetPoint.Y = Math.Abs(targetPoint.Y - Tools.m_PreviousPoint.Y);
                switch (m_ToolSize)
                {
                case ToolSize.Size_1:
                    Graphics.FromImage(sourceBitmap).DrawEllipse(new Pen(colorType, 1), staticPoint.X, staticPoint.Y, targetPoint.X, targetPoint.Y);
                    break;

                case ToolSize.Size_2:
                    Graphics.FromImage(sourceBitmap).FillEllipse(Brushes.White, staticPoint.X, staticPoint.Y, targetPoint.X, targetPoint.Y);
                    Graphics.FromImage(sourceBitmap).DrawEllipse(new Pen(colorType, 1), staticPoint.X, staticPoint.Y, targetPoint.X, targetPoint.Y);
                    break;

                case ToolSize.Size_3:
                    Graphics.FromImage(sourceBitmap).FillEllipse(new SolidBrush(colorType), staticPoint.X, staticPoint.Y, targetPoint.X, targetPoint.Y);
                    break;
                }
                m_PreviousPoint = Point.Empty;
                m_MouseState    = MouseStateType.MouseUp;
                break;
            }
            }
        }