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; } } } }
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; } }
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(); }
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); }
/// <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; } } }
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); }
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(); } }
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(); }