private void Redo() { if (ImagenG.imgPosterior != null) { ImagenG.limgAnterior.Add(ImagenG.img); ImagenG.img = ImagenG.imgPosterior; ImagenG.Redo(); //ImagenG.imgAnterior = getImgAnterior(); var rec = new Rectangle(0, 0, ImagenG.img.Width, ImagenG.img.Height); Bitmap bmp = new Bitmap(ImagenG.img.Width, ImagenG.img.Height); using (var g = Graphics.FromImage(bmp)) { //g.DrawImage(img, new Rectangle(0, 0, rec.Width, rec.Height), rec, GraphicsUnit.Pixel); g.DrawImage(ImagenG.img, new Rectangle(0, 0, ImagenG.img.Width, ImagenG.img.Height), rec, GraphicsUnit.Pixel); } //img = bmp; ImagenG.img = bmp; pck.Image = ImagenG.img; pck.Refresh(); this.tsbRecortar.Checked = false; this.activeTool = eTools.None; // calculo de variables de zoom calcularZoom(); } visibilidadBtMod(); }
private void RedoPlus(int pos) { if (ImagenG.imgPosterior != null) { ImagenG.limgAnterior.Add(ImagenG.img); List <int> posiciones = new List <int>(); for (int i = 0; i < ImagenG.limgPosterior.Count(); i++) { if (pos < i) { posiciones.Add(i); ImagenG.limgAnterior.Add(ImagenG.limgPosterior[i]); } } //ImagenG.limgPosterior.Add(ImagenG.img); ImagenG.img = ImagenG.limgPosterior[pos]; ImagenG.RedoPlus(posiciones, pos); //ImagenG.imgAnterior = getImgAnterior(); //ImagenG.limgAnterior.Add(ImagenG.img); //ImagenG.img = ImagenG.imgPosterior; //ImagenG.Redo(); //ImagenG.imgAnterior = getImgAnterior(); var rec = new Rectangle(0, 0, ImagenG.img.Width, ImagenG.img.Height); Bitmap bmp = new Bitmap(ImagenG.img.Width, ImagenG.img.Height); using (var g = Graphics.FromImage(bmp)) { //g.DrawImage(img, new Rectangle(0, 0, rec.Width, rec.Height), rec, GraphicsUnit.Pixel); g.DrawImage(ImagenG.img, new Rectangle(0, 0, ImagenG.img.Width, ImagenG.img.Height), rec, GraphicsUnit.Pixel); } //img = bmp; ImagenG.img = bmp; pck.Image = ImagenG.img; pck.Refresh(); this.tsbRecortar.Checked = false; this.activeTool = eTools.None; // calculo de variables de zoom calcularZoom(); } visibilidadBtMod(); }
/// <summary>Recorta una area de la imagen</summary> /// <param name="preview">Indica si la acción es el preview o la acción final</param> private void recortar(bool preview) { var rec = new Rectangle(Math.Min(pStart.X, pEnd.X), Math.Min(pStart.Y, pEnd.Y), Math.Abs(pStart.X - pEnd.X), Math.Abs(pStart.Y - pEnd.Y)); if (preview) { if (imgTmp != null) { imgTmp.Dispose(); } //imgTmp = (Bitmap)img.Clone(); imgTmp = (Bitmap)ImagenG.img.Clone(); using (var g = Graphics.FromImage(imgTmp)) { var fb = new SolidBrush(Color.FromArgb(100, Color.White)); var p = new Pen(Brushes.Black); p.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid; g.FillRectangle(fb, rec); g.DrawRectangle(p, rec); } } else { if (rec.Height > 0 && rec.Width > 0) { ImagenG.limgAnterior.Add(ImagenG.img); Bitmap bmp = new Bitmap(rec.Width, rec.Height); using (var g = Graphics.FromImage(bmp)) { //g.DrawImage(img, new Rectangle(0, 0, rec.Width, rec.Height), rec, GraphicsUnit.Pixel); g.DrawImage(ImagenG.img, new Rectangle(0, 0, rec.Width, rec.Height), rec, GraphicsUnit.Pixel); } //img = bmp; ImagenG.img = bmp; this.tsbRecortar.Checked = false; this.activeTool = eTools.None; } else { MessageBox.Show("Mantener el cursor pulsado mientras se hace la seleccion"); } } visibilidadBtMod(); }
private void pck_MouseUp(object sender, MouseEventArgs e) { if (activeTool != eTools.None) { calcularPosOnImage(e.Location); if (!dentroImagen || !editStart) { activeTool = eTools.None; pStart = Point.Empty; pEnd = Point.Empty; editStart = false; } else { pEnd = new Point(this.relImgPosX, this.relImgPosY); //if (pStart.X - pEnd.X!=0 && pStart.Y - pEnd.Y != 0) //{ switch (activeTool) { case eTools.Flecha: this.flecha(false); break; case eTools.Linea: this.line(false); break; case eTools.Recortar: this.recortar(false); break; case eTools.Rectangulo: this.rectangulo(false); break; } if (imgTmp != null) { imgTmp.Dispose(); imgTmp = null; } //pck.Image = img; pck.Image = ImagenG.img; pck.Refresh(); calcularZoom(); //activeTool = eTools.None; pStart = Point.Empty; pEnd = Point.Empty; editStart = false; //} } } }
/// <summary>Cambio de herramienta. Estable los chechs y herramienta activa</summary> /// <param name="tsb">botón pulsado. Puede ser nulo al esteablecer la herramienta a None</param> /// <param name="newTool">herramienta a selecciónar o desseleccionar.</param> private void cambiarHerramienta(ToolStripButton tsb, eTools newTool) { if (tsb == null || tsb.Checked) { activeTool = eTools.None; } else { activeTool = newTool; } foreach (ToolStripItem b in toolStrip1.Items) { if (b is ToolStripButton) { ((ToolStripButton)b).Checked = false; } } if (tsb != null && activeTool != eTools.None) { tsb.Checked = true; } }
/// <summary>Recorta una area de la imagen</summary> /// <param name="preview">Indica si la acción es el preview o la acción final</param> private void recortar(bool preview) { var rec = new Rectangle(Math.Min(pStart.X, pEnd.X), Math.Min(pStart.Y, pEnd.Y), Math.Abs(pStart.X - pEnd.X), Math.Abs(pStart.Y - pEnd.Y)); if (preview) { if (imgTmp != null) { imgTmp.Dispose(); } imgTmp = (Bitmap)img.Clone(); using (var g = Graphics.FromImage(imgTmp)) { var fb = new SolidBrush(Color.FromArgb(100, Color.White)); var p = new Pen(Brushes.Black); p.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid; g.FillRectangle(fb, rec); g.DrawRectangle(p, rec); } } else { Bitmap bmp = new Bitmap(rec.Width, rec.Height); using (var g = Graphics.FromImage(bmp)) { g.DrawImage(img, new Rectangle(0, 0, rec.Width, rec.Height), rec, GraphicsUnit.Pixel); } img = bmp; this.tsbRecortar.Checked = false; this.activeTool = eTools.None; } }