示例#1
0
        private void Save()
        {
            foreach (Control ctl in this.xtraScrollableControl.Controls)
            {
                if (ctl.GetType().Name.ToLower() == "picturebox")
                {
                    if (ctl.Tag != null)
                    {
                        PictureValue voPicture = ctl.Tag as PictureValue;
                        Image        img       = new Bitmap(ctl.Width, ctl.Height);
                        Graphics     gdi       = Graphics.FromImage(img);
                        SolidBrush   brush     = new SolidBrush(Color.White);
                        gdi.FillRectangle(brush, 0, 0, voPicture.intWidth, voPicture.intHeight);
                        if (voPicture.imgBack != null)
                        {
                            gdi.DrawImage(voPicture.imgBack, 0, 0, voPicture.intWidth, voPicture.intHeight);
                        }
                        if (voPicture.imgFront != null)
                        {
                            gdi.DrawImage(voPicture.imgFront, 0, 0, voPicture.intWidth, voPicture.intHeight);
                        }

                        this.CurrentEditImage = img;
                        this.DialogResult     = DialogResult.OK;
                        return;
                    }
                }
            }
        }
示例#2
0
        private void PictureBox_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
        {
            if (!blnPaint)
            {
                return;
            }

            PictureBox ctl1 = (PictureBox)sender;

            PictureValue objPic = (PictureValue)ctl1.Tag;

            if (objPic.imgBack != null)
            {
                e.Graphics.DrawImage(objPic.imgBack, 0, 0, ctl1.Width, ctl1.Height);
                objPic.intWidth = ctl1.ClientRectangle.Width;
            }

            if (objPic.imgFront != null)
            {
                e.Graphics.DrawImage(objPic.imgFront, ctl1.ClientRectangle);
            }

            //只是画矩形轨迹
            if (imgDrawRectangle != null)
            {
                e.Graphics.DrawImage(imgDrawRectangle, 0, 0, ctl1.Width, ctl1.Height);
                imgDrawRectangle = null;
            }
            //只是画圆轨迹
            if (imgDrawRound != null)
            {
                e.Graphics.DrawImage(imgDrawRound, 0, 0, ctl1.Width, ctl1.Height);
                imgDrawRound = null;
            }
            //只是线轨迹
            if (imgDrawLine != null)
            {
                e.Graphics.DrawImage(imgDrawLine, 0, 0, ctl1.Width, ctl1.Height);
                imgDrawLine = null;
            }
            //只是画实心圆轨迹
            if (imgDrawSolidRound != null)
            {
                e.Graphics.DrawImage(imgDrawSolidRound, 0, 0, ctl1.Width, ctl1.Height);
                imgDrawSolidRound = null;
            }
            //只是画实心矩形轨迹
            if (imgDrawSolidRectangle != null)
            {
                e.Graphics.DrawImage(imgDrawSolidRectangle, 0, 0, ctl1.Width, ctl1.Height);
                imgDrawSolidRectangle = null;
            }
            //只是画任意形状轨迹
            if (imgDrawDashPen != null)
            {
                e.Graphics.DrawImage(imgDrawDashPen, 0, 0, ctl1.Width, ctl1.Height);
                imgDrawDashPen = null;
            }
        }
示例#3
0
        private void PictureBox_Resize(object sender, EventArgs e)
        {
            PictureBox   ctl1   = (PictureBox)sender;
            PictureValue objPic = (PictureValue)(ctl1.Tag);

            objPic.intWidth  = ctl1.ClientRectangle.Width;
            objPic.intHeight = ctl1.ClientRectangle.Height;
            ctl1.Invalidate();
        }
示例#4
0
        private void LoadImage()
        {
            Image img  = this.CurrentEditImage;
            int   intX = 3; // (this.xtraScrollableControl.Width - img.Width) / 2;
            int   intY = 3; // (this.xtraScrollableControl.Height - img.Height) / 2;

            if (intX < 0)
            {
                intX = 0;
            }
            if (intY < 0)
            {
                intY = 0;
            }

            PictureBox objPicBox = new PictureBox();

            objPicBox.Location    = new Point(intX, intY);
            objPicBox.Image       = img;
            objPicBox.Size        = new Size(img.Width, img.Height);
            objPicBox.BackColor   = Color.White;
            objPicBox.BorderStyle = BorderStyle.None;

            objPicBox.MouseDown += new MouseEventHandler(PictureBox_MouseDown);
            objPicBox.MouseMove += new MouseEventHandler(PictureBox_MouseMove);
            objPicBox.MouseUp   += new MouseEventHandler(PictureBox_MouseUp);
            objPicBox.Paint     += new PaintEventHandler(PictureBox_Paint);
            objPicBox.Resize    += new EventHandler(PictureBox_Resize);

            PictureValue voPicture = new PictureValue();

            voPicture.imgBack   = img;
            voPicture.intWidth  = img.Width;
            voPicture.intHeight = img.Height;

            objPicBox.Tag = voPicture;
            objPicBox.Invalidate();

            this.enumPicPaintType = enmPicturePaintType.None;
            this.xtraScrollableControl.Controls.Clear();
            this.xtraScrollableControl.Controls.Add(objPicBox);

            Graphics   g        = Graphics.FromImage(objPicBox.Image);
            SolidBrush sbRubber = new SolidBrush(Color.White);

            g.FillRectangle(sbRubber, objPicBox.Image.Width - 2, 0, 2, objPicBox.Image.Height);
            g.FillRectangle(sbRubber, 0, objPicBox.Image.Height - 2, objPicBox.Image.Width, 2);
            g = null;

            this.penDash             = new Pen(Color.Black);
            this.penDash.DashPattern = new float[] { 3.0f, 3.0f };
            this.ghpSelectPath       = new GraphicsPath();
            this.imgFillImage        = new Bitmap(32, 32);
            this.txbContent          = new TextureBrush(imgFillImage);
        }
示例#5
0
 /// <summary>
 /// 处理文字输入
 /// </summary>
 /// <param name="sender"></param>
 private void HandleTextInput(object sender, System.Windows.Forms.MouseEventArgs e)
 {
     if (enumPicPaintType == enmPicturePaintType.Text)
     {
         PictureBox picContainer = (PictureBox)sender;
         if (rtfText.Visible)
         {
             if (rtfText.Text != "")
             {
                 PictureValue objPic = (PictureValue)picContainer.Tag;
                 Image        imgFront;
                 Graphics     g;
                 if (objPic.imgFront == null)
                 {
                     imgFront = new Bitmap(objPic.intWidth, objPic.intHeight);
                 }
                 else
                 {
                     imgFront = objPic.imgFront;
                 }
                 g = Graphics.FromImage(imgFront);
                 Rectangle rtg = new Rectangle(rtfText.Location, new Size(rtfText.Width, rtfText.Height));
                 g.DrawString(rtfText.Text, rtfText.Font, this.bruString, rtg);
                 g.Dispose();
                 objPic.imgFront  = imgFront;
                 picContainer.Tag = objPic;
                 rtfText.Text     = string.Empty;
                 picContainer.Invalidate();
             }
             rtfText.ImeMode = ImeMode.Close;
             rtfText.Visible = false;
         }
         else
         {
             picContainer.Controls.Add(rtfText);
             rtfText.Location  = new Point(e.X, e.Y);
             rtfText.Width     = picContainer.Width - rtfText.Left - 10;
             rtfText.Height    = (this.intDefaultHeight < picContainer.Height - rtfText.Top) ? this.intDefaultHeight : (picContainer.Height - rtfText.Top);
             rtfText.BackColor = Color.Black;
             rtfText.ForeColor = Color.White;
             rtfText.Visible   = true;
             rtfText.ImeMode   = ImeMode.OnHalf;
             rtfText.Focus();
         }
     }
     else//没有选中文字工具时
     {
         if (rtfText.Visible)
         {
             rtfText.ImeMode = ImeMode.Close;
             rtfText.Visible = false;
         }
     }
 }
示例#6
0
        private void PictureBox_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            PictureValue objPic = (PictureValue)(((PictureBox)sender).Tag);

            SelectPictureBox((PictureBox)sender);
            blnPaintPoint = true;

            if (enumPicPaintType != enmPicturePaintType.Polygon)
            {
                intX1 = e.X;
                intY1 = e.Y;
            }

            //一开始鼠标未按下时
            if (intX1 == 0 && intY1 == 0)
            {
                intX1 = e.X;
                intY1 = e.Y;

                intXDefault = intX1;
                intYDefault = intY1;
            }
            HandleTextInput(sender, e);
        }
示例#7
0
        private void PictureBox_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            intX2 = e.X;
            intY2 = e.Y;

            if (blnPaintPoint)
            {
                PictureBox   picContainer = (PictureBox)sender;
                PictureValue objPic       = (PictureValue)picContainer.Tag;
                Image        imgFront     = new Bitmap(picContainer.Width, picContainer.Height);
                Graphics     g            = Graphics.FromImage(imgFront);
                SolidBrush   sb           = new SolidBrush(penDefault.Color);
                if (objPic.imgFront != null)
                {
                    g.DrawImage(objPic.imgFront, 0, 0);
                }

                switch (enumPicPaintType)
                {
                case enmPicturePaintType.Pen:
                    g.DrawLine(penDefault, intX1, intY1, intX2, intY2);
                    intX1 = intX2;
                    intY1 = intY2;
                    break;

                case enmPicturePaintType.Line:
                    penDefault.DashStyle = DashStyle.Dot;
                    imgDrawLine          = new Bitmap(picContainer.Width, picContainer.Height);
                    g = Graphics.FromImage(imgDrawLine);
                    g.DrawLine(penDefault, intX1, intY1, intX2, intY2);
                    penDefault.DashStyle = DashStyle.Solid;
                    break;

                case enmPicturePaintType.Round:
                    penDefault.DashStyle = DashStyle.Dot;
                    imgDrawRound         = new Bitmap(picContainer.Width, picContainer.Height);
                    g = Graphics.FromImage(imgDrawRound);
                    g.DrawEllipse(penDefault, intX1, intY1, intX2 - intX1, intY2 - intY1);
                    penDefault.DashStyle = DashStyle.Solid;
                    break;

                case enmPicturePaintType.Rectangle:
                {
                    penDefault.DashStyle = DashStyle.Dot;
                    imgDrawRectangle     = new Bitmap(picContainer.Width, picContainer.Height);
                    g = Graphics.FromImage(imgDrawRectangle);
                    Rectangle rtg = GetRectangle(intX1, intX2, intY1, intY2);
                    g.DrawRectangle(penDefault, rtg);
                    penDefault.DashStyle = DashStyle.Solid;
                }
                break;

                case enmPicturePaintType.Rubber:
                    Color      clrRubber = System.Drawing.Color.FromArgb(0, 100, 100, 100);//(((System.Byte)(51)), ((System.Byte)(102)), ((System.Byte)(153)));
                    SolidBrush sbRubber  = new SolidBrush(Color.White);
                    g.FillRectangle(sbRubber, intX1 - 2, intY1 - 2, 4, 4);

                    intX1 = intX2;
                    intY1 = intY2;
                    break;

                case enmPicturePaintType.Polygon:
                    penDefault.DashStyle = DashStyle.Dot;
                    imgDrawRound         = new Bitmap(picContainer.Width, picContainer.Height);
                    g = Graphics.FromImage(imgDrawRound);
                    g.DrawLine(penDefault, intX1, intY1, intX2, intY2);
                    penDefault.DashStyle = DashStyle.Solid;
                    break;

                case enmPicturePaintType.SolidRound:
                    imgDrawSolidRound = new Bitmap(picContainer.Width, picContainer.Height);
                    g = Graphics.FromImage(imgDrawSolidRound);
                    g.FillEllipse(sb, intX1, intY1, intX2 - intX1, intY2 - intY1);
                    break;

                case enmPicturePaintType.SolidRect:
                    imgDrawSolidRectangle = new Bitmap(picContainer.Width, picContainer.Height);
                    g = Graphics.FromImage(imgDrawSolidRectangle);
                    g.FillRectangle(sb, intX1, intY1, Math.Abs(intX2 - intX1), Math.Abs(intY2 - intY1));
                    break;

                case enmPicturePaintType.DashPen:
                    Pen p = new Pen(Color.Black);
                    p.DashStyle    = DashStyle.DashDot;
                    imgDrawDashPen = new Bitmap(picContainer.Width, picContainer.Height);
                    g = Graphics.FromImage(imgDrawDashPen);
                    ghpSelectPath.AddLine(intX1, intY1, intX2, intY2);
                    g.DrawPath(p, ghpSelectPath);
                    intX1 = intX2;
                    intY1 = intY2;
                    break;

                case enmPicturePaintType.DashRect:
                {
                    imgDrawRectangle = new Bitmap(picContainer.Width, picContainer.Height);
                    g = Graphics.FromImage(imgDrawRectangle);
                    Rectangle rtg = GetRectangle(intX1, intX2, intY1, intY2);
                    g.DrawRectangle(penDash, rtg);
                }
                break;

                case enmPicturePaintType.DashRound:
                    imgDrawRound = new Bitmap(picContainer.Width, picContainer.Height);
                    g            = Graphics.FromImage(imgDrawRound);
                    g.DrawEllipse(penDash, intX1, intY1, intX2 - intX1, intY2 - intY1);
                    break;
                }

                g.Dispose();
                objPic.imgFront       = imgFront;
                ((Control)sender).Tag = objPic;

                ((Control)sender).Invalidate();
            }
        }
示例#8
0
        private void PictureBox_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            blnPaint      = true;
            blnPaintPoint = false;
            intX2         = e.X;
            intY2         = e.Y;

            PictureValue objPic = (PictureValue)((Control)sender).Tag;
            Image        imgFront;
            Graphics     g;

            if (objPic.imgFront == null)
            {
                imgFront = new Bitmap(objPic.intWidth, objPic.intHeight);
            }
            else
            {
                imgFront = objPic.imgFront;
            }
            g = Graphics.FromImage(imgFront);
            if (objPic.imgFront != null)
            {
                g.DrawImage(objPic.imgFront, 0, 0);
            }
            switch (enumPicPaintType)
            {
            case enmPicturePaintType.Pen:
            {
                SolidBrush sb = new SolidBrush(penDefault.Color);
                g.FillRectangle(sb, intX1, intY1, 1, 1);
            }
            break;

            case enmPicturePaintType.Line:
                g.DrawLine(penDefault, intX1, intY1, intX2, intY2);
                break;

            case enmPicturePaintType.Round:
                g.DrawEllipse(penDefault, intX1, intY1, intX2 - intX1, intY2 - intY1);
                break;

            case enmPicturePaintType.Rectangle:
            {
                Rectangle rtg = GetRectangle(intX1, intX2, intY1, intY2);;
                g.DrawRectangle(penDefault, rtg);
            }
            break;

            case enmPicturePaintType.Rubber:
            {
                SolidBrush sb = new SolidBrush(Color.White);
                g.FillRectangle(sb, intX1 - 2, intY1 - 2, 4, 4);
            }
            break;

            case enmPicturePaintType.Polygon:
                g.DrawLine(penDefault, intX1, intY1, intX2, intY2);
                intX1 = intX2;
                intY1 = intY2;

                if (intX2 == intXDefault && intY2 == intYDefault)
                {
                    intX1 = 0;
                    intY1 = 0;
                }
                break;

            case enmPicturePaintType.SolidRound:
            {
                SolidBrush sb = new SolidBrush(penDefault.Color);
                g.FillEllipse(sb, intX1, intY1, intX2 - intX1, intY2 - intY1);
            }
            break;

            case enmPicturePaintType.SolidRect:
            {
                SolidBrush sb = new SolidBrush(penDefault.Color);
                g.FillRectangle(sb, intX1, intY1, intX2 - intX1, intY2 - intY1);
            }
            break;

            case enmPicturePaintType.DashPen:
                imgDrawDashPen = null;
                FillImage(g);
                break;

            case enmPicturePaintType.DashRect:
            {
                Rectangle rtg = GetRectangle(intX1, intX2, intY1, intY2);;
                ghpSelectPath.Reset();
                ghpSelectPath.AddRectangle(rtg);
                FillImage(g);
            }
            break;

            case enmPicturePaintType.DashRound:
                ghpSelectPath.Reset();
                ghpSelectPath.AddEllipse(intX1, intY1, intX2 - intX1, intY2 - intY1);
                FillImage(g);
                break;
            }
            g.Dispose();
            objPic.imgFront       = imgFront;
            ((Control)sender).Tag = objPic;
            ((Control)sender).Invalidate();
        }