/// <summary> /// این متد تمام لایه یکی کرده و در یک تصویر واحد بر می گرداند /// </summary> /// <returns></returns> public Bitmap CreateImage() { try { var img = ApplayImage(); var tool = new Sbn.Controls.Imaging.SbnImageTools(); return(tool.GetWholeImage(img)); } catch { } return(null); }
public ImageDocument ApplayImage() { ApplaypActiveCurve(); var tools = new Sbn.Controls.Imaging.SbnImageTools(); Layer ly = new Layer(); Elements elms = new Elements(); foreach (Sbn.FramWork.Drawing.Shape film in this.drawingPanel1.Shapes) { if (!(film is Sbn.AdvancedControls.Imaging.SbnPaint.BodyBackground) && !(film is Sbn.AdvancedControls.Imaging.SbnPaint.Image)) { Element el = new Element(); Sbn.AdvancedControls.Imaging.SbnPaint.Image img = new Sbn.AdvancedControls.Imaging.SbnPaint.Image(); Image img2; double ll = Math.Truncate(this.drawingPanel1.ZoomFactor * 100000); float tt = (float)(100000 / ll); if (film is Sbn.AdvancedControls.Imaging.SbnPaint.Image) { img = (Sbn.AdvancedControls.Imaging.SbnPaint.Image)film; img2 = img.Bitmap; } else { img2 = film.GetImage(this.drawingPanel1.Zoom);// img.getImageFromShape(film, this.drawingPanel1.ZoomFactor); } ((Bitmap)img2).MakeTransparent(Color.White); System.IO.MemoryStream ms = new MemoryStream(); // img2.Save("C:\\as.jpg"); img2.Save(ms, System.Drawing.Imaging.ImageFormat.Png); el.Stream = new byte[ms.Length]; el.Stream = ms.GetBuffer(); int x = (int)(film.Location.X - this.drawingPanel1.BackgroundLayer.Location.X); int y = (int)(film.Location.Y - this.drawingPanel1.BackgroundLayer.Location.Y); el.LocationX = (long)(x * tt); el.LocationY = (long)(y * tt); el.Tag = img2; // img2.Save("C:\\aa.jpg"); // el.ID = -(elms.Count + 1); ms.Close(); ms.Dispose(); if (el.ID <= 0) { el.ID = -elms.Count - 1; } if (!elms.Contains(el)) { elms.Add(el); } else { } } else { // film.Appearance.Image.Save("C:\\aa.jpg"); if (film is Sbn.AdvancedControls.Imaging.SbnPaint.BodyBackground) { //((FilmstripImage)this.CurrentImage).Image = film.Appearance.Image; try { Bitmap result = new Bitmap(film.Appearance.Image.Width, film.Appearance.Image.Height); Graphics gg = Graphics.FromImage(result); gg.DrawImage(film.Appearance.Image, new Rectangle(0, 0, film.Appearance.Image.Width, film.Appearance.Image.Height)); gg.Save(); gg.Dispose(); using (Image imageToExport = result) { MemoryStream ms = new MemoryStream(); // ((FilmstripImage)this.CurrentImage).Image.Save(ms, System.Drawing.Imaging.ImageFormat.Tiff); imageToExport.Save(ms, System.Drawing.Imaging.ImageFormat.Tiff); this.CurrentImage.Stream = ms.GetBuffer(); ms.Dispose(); } result.Dispose(); result = null; } catch { } } else { double ll = Math.Truncate(this.drawingPanel1.ZoomFactor * 100000); float tt = (float)(100000 / ll); int x = (int)(film.Location.X - this.drawingPanel1.BackgroundLayer.Location.X); int y = (int)(film.Location.Y - this.drawingPanel1.BackgroundLayer.Location.Y); //((Element)film.Tag).LocationX = (long)film.Location.X ; //((Element)film.Tag).LocationY = (long)film.Location.Y; if (film.Tag is Element) { try { ((Element)film.Tag).LocationX = (long)(x * tt); ((Element)film.Tag).LocationY = (long)(y * tt); Image iig = film.Appearance.Image; // iig.Save("C:\\dddd.jpeg"); if (film.IsEdited) { Bitmap bmp = new Bitmap((int)(iig.Width), (int)(iig.Height)); bmp = new Bitmap((int)(iig.Width * tt), (int)(iig.Height * tt)); System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmp); g.Clear(Color.White); g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; g.DrawImage(iig, new Rectangle(new System.Drawing.Point(0, 0), bmp.Size)); bmp.MakeTransparent(Color.White); //this.Image = bmp; g.Dispose(); MemoryStream ms = new MemoryStream(); bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png); if (((Element)film.Tag).Stream.Length != ms.GetBuffer().Length) { ((Element)film.Tag).Stream = ms.GetBuffer(); ((Element)film.Tag).Tag = bmp; ((Element)film.Tag).Title += "Edited"; } ms.Dispose(); } } catch { } } else { try { var newElm = new Element(); newElm.LocationX = (long)(x * tt); newElm.LocationY = (long)(y * tt); Image iig = film.Appearance.Image; Bitmap bmp = new Bitmap((int)(iig.Width), (int)(iig.Height)); bmp = new Bitmap((int)(iig.Width * tt), (int)(iig.Height * tt)); System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmp); g.Clear(Color.White); g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; g.DrawImage(iig, new Rectangle(new System.Drawing.Point(0, 0), bmp.Size)); bmp.MakeTransparent(Color.White); //this.Image = bmp; g.Dispose(); MemoryStream ms = new MemoryStream(); bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png); newElm.Stream = ms.GetBuffer(); newElm.Tag = bmp; //newElm.Title += "Edited"; ms.Dispose(); elms.Add(newElm); } catch { } } } } } if (elms.Count > 0) { ly.elements = elms; if (CurrentImage == null) { CurrentImage = new ImageDocument(); CurrentImage.layers = new Layers(); } if (CurrentImage.layers == null) { CurrentImage.layers = new Layers(); } if (ly.ID <= 0) { ly.ID = -CurrentImage.layers.Count - 1; } CurrentImage.layers.Add(ly); } // ((FilmstripImage)this.CurrentImage).Image.Save("c:\\bb.jpg"); // this.CurrentImage.layers = new Layers(); // this.CurrentImage.layers = getElements(); return(CurrentImage); }