diff --git a/PesFile/PesFile.cs b/PesFile/PesFile.cs index b4f56c5..f3fdffe 100644 --- a/PesFile/PesFile.cs +++ b/PesFile/PesFile.cs @@ -456,6 +456,7 @@ namespace PesFile } } } + return DrawArea; } } diff --git a/embroideryReader/EmbroideryReaderSettings.cs b/embroideryReader/EmbroideryReaderSettings.cs index 223d3b1..9b7abe9 100644 --- a/embroideryReader/EmbroideryReaderSettings.cs +++ b/embroideryReader/EmbroideryReaderSettings.cs @@ -53,7 +53,7 @@ namespace embroideryReader private const String SETTING_WINDOW_WIDTH = "window width"; private const String SETTING_WINDOW_HEIGHT = "window height"; - private const String SETTING_DESIGN_SCALE = "design scale"; + private const String SETTING_AUTOSCALE_DESIGN = "auto scale design"; private const String SECTION_TRANSPARENCY_GRID = "transparency grid"; private const String SETTING_TRANSPARENCY_GRID_ENABLE = "enabled"; @@ -307,45 +307,15 @@ namespace embroideryReader } } - public ScaleSetting DesignScale + public bool AutoScaleDesign { get { - string temp = settings.getValue(SETTING_DESIGN_SCALE, ""); - - switch(temp) - { - case "Scale90": - return ScaleSetting.Scale90; - case "Scale80": - return ScaleSetting.Scale80; - case "Scale70": - return ScaleSetting.Scale70; - case "Scale60": - return ScaleSetting.Scale60; - case "Scale50": - return ScaleSetting.Scale50; - case "Scale40": - return ScaleSetting.Scale40; - case "Scale30": - return ScaleSetting.Scale30; - case "Scale20": - return ScaleSetting.Scale20; - case "Scale10": - return ScaleSetting.Scale10; - case "Scale5": - return ScaleSetting.Scale5; - - case "FitToWindow": - return ScaleSetting.FitToWindow; - - default: - return ScaleSetting.Scale100; - } + return settings.getValue(SETTING_AUTOSCALE_DESIGN, false); } set { - settings.setValue(SETTING_DESIGN_SCALE, value); + settings.setValue(SETTING_AUTOSCALE_DESIGN, value); } } diff --git a/embroideryReader/frmMain.Designer.cs b/embroideryReader/frmMain.Designer.cs index 6ef3fa1..c81099f 100644 --- a/embroideryReader/frmMain.Designer.cs +++ b/embroideryReader/frmMain.Designer.cs @@ -77,6 +77,7 @@ namespace embroideryReader this.printPreviewDialog1 = new System.Windows.Forms.PrintPreviewDialog(); this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog(); this.timer1 = new System.Windows.Forms.Timer(this.components); + this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); this.menuStrip1.SuspendLayout(); this.panel2.SuspendLayout(); this.statusStrip1.SuspendLayout(); @@ -238,6 +239,7 @@ namespace embroideryReader // this.zoomToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.fitToWindowToolStripMenuItem, + this.toolStripSeparator5, this.scale100ToolStripMenuItem, this.scale90ToolStripMenuItem, this.scale80ToolStripMenuItem, @@ -257,86 +259,84 @@ namespace embroideryReader // fitToWindowToolStripMenuItem // this.fitToWindowToolStripMenuItem.Name = "fitToWindowToolStripMenuItem"; - this.fitToWindowToolStripMenuItem.Size = new System.Drawing.Size(146, 22); + this.fitToWindowToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.fitToWindowToolStripMenuItem.Text = "Fit to window"; this.fitToWindowToolStripMenuItem.Click += new System.EventHandler(this.fitToWindowToolStripMenuItem_Click); // // scale100ToolStripMenuItem // - this.scale100ToolStripMenuItem.Checked = true; - this.scale100ToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked; this.scale100ToolStripMenuItem.Name = "scale100ToolStripMenuItem"; - this.scale100ToolStripMenuItem.Size = new System.Drawing.Size(146, 22); + this.scale100ToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.scale100ToolStripMenuItem.Text = "100%"; this.scale100ToolStripMenuItem.Click += new System.EventHandler(this.scale100ToolStripMenuItem_Click); // // scale90ToolStripMenuItem // this.scale90ToolStripMenuItem.Name = "scale90ToolStripMenuItem"; - this.scale90ToolStripMenuItem.Size = new System.Drawing.Size(146, 22); + this.scale90ToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.scale90ToolStripMenuItem.Text = "90%"; this.scale90ToolStripMenuItem.Click += new System.EventHandler(this.scale90ToolStripMenuItem_Click); // // scale80ToolStripMenuItem // this.scale80ToolStripMenuItem.Name = "scale80ToolStripMenuItem"; - this.scale80ToolStripMenuItem.Size = new System.Drawing.Size(146, 22); + this.scale80ToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.scale80ToolStripMenuItem.Text = "80%"; this.scale80ToolStripMenuItem.Click += new System.EventHandler(this.scale80ToolStripMenuItem_Click); // // scale70ToolStripMenuItem // this.scale70ToolStripMenuItem.Name = "scale70ToolStripMenuItem"; - this.scale70ToolStripMenuItem.Size = new System.Drawing.Size(146, 22); + this.scale70ToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.scale70ToolStripMenuItem.Text = "70%"; this.scale70ToolStripMenuItem.Click += new System.EventHandler(this.scale70ToolStripMenuItem_Click); // // scale60ToolStripMenuItem // this.scale60ToolStripMenuItem.Name = "scale60ToolStripMenuItem"; - this.scale60ToolStripMenuItem.Size = new System.Drawing.Size(146, 22); + this.scale60ToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.scale60ToolStripMenuItem.Text = "60%"; this.scale60ToolStripMenuItem.Click += new System.EventHandler(this.scale60ToolStripMenuItem_Click); // // scale50ToolStripMenuItem // this.scale50ToolStripMenuItem.Name = "scale50ToolStripMenuItem"; - this.scale50ToolStripMenuItem.Size = new System.Drawing.Size(146, 22); + this.scale50ToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.scale50ToolStripMenuItem.Text = "50%"; this.scale50ToolStripMenuItem.Click += new System.EventHandler(this.scale50ToolStripMenuItem_Click); // // scale40ToolStripMenuItem // this.scale40ToolStripMenuItem.Name = "scale40ToolStripMenuItem"; - this.scale40ToolStripMenuItem.Size = new System.Drawing.Size(146, 22); + this.scale40ToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.scale40ToolStripMenuItem.Text = "40%"; this.scale40ToolStripMenuItem.Click += new System.EventHandler(this.scale40ToolStripMenuItem_Click); // // scale30ToolStripMenuItem // this.scale30ToolStripMenuItem.Name = "scale30ToolStripMenuItem"; - this.scale30ToolStripMenuItem.Size = new System.Drawing.Size(146, 22); + this.scale30ToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.scale30ToolStripMenuItem.Text = "30%"; this.scale30ToolStripMenuItem.Click += new System.EventHandler(this.scale30ToolStripMenuItem_Click); // // scale20ToolStripMenuItem // this.scale20ToolStripMenuItem.Name = "scale20ToolStripMenuItem"; - this.scale20ToolStripMenuItem.Size = new System.Drawing.Size(146, 22); + this.scale20ToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.scale20ToolStripMenuItem.Text = "20%"; this.scale20ToolStripMenuItem.Click += new System.EventHandler(this.scale20ToolStripMenuItem_Click); // // scale10ToolStripMenuItem // this.scale10ToolStripMenuItem.Name = "scale10ToolStripMenuItem"; - this.scale10ToolStripMenuItem.Size = new System.Drawing.Size(146, 22); + this.scale10ToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.scale10ToolStripMenuItem.Text = "10%"; this.scale10ToolStripMenuItem.Click += new System.EventHandler(this.scale10ToolStripMenuItem_Click); // // scale5ToolStripMenuItem // this.scale5ToolStripMenuItem.Name = "scale5ToolStripMenuItem"; - this.scale5ToolStripMenuItem.Size = new System.Drawing.Size(146, 22); + this.scale5ToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.scale5ToolStripMenuItem.Text = "5%"; this.scale5ToolStripMenuItem.Click += new System.EventHandler(this.scale5ToolStripMenuItem_Click); // @@ -444,6 +444,11 @@ namespace embroideryReader // this.timer1.Tick += new System.EventHandler(this.timer1_Tick); // + // toolStripSeparator5 + // + this.toolStripSeparator5.Name = "toolStripSeparator5"; + this.toolStripSeparator5.Size = new System.Drawing.Size(149, 6); + // // frmMain // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -518,6 +523,7 @@ namespace embroideryReader private System.Windows.Forms.ToolStripMenuItem scale20ToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem scale10ToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem scale5ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator5; } } diff --git a/embroideryReader/frmMain.cs b/embroideryReader/frmMain.cs index 3d4dfcd..2dc1920 100644 --- a/embroideryReader/frmMain.cs +++ b/embroideryReader/frmMain.cs @@ -32,26 +32,11 @@ using System.Text; using System.Windows.Forms; using System.Reflection; using System.Runtime.InteropServices; +using System.Drawing.Imaging; +using System.Drawing.Drawing2D; namespace embroideryReader { - public enum ScaleSetting - { - Unknown, - FitToWindow, - Scale100, - Scale90, - Scale80, - Scale70, - Scale60, - Scale50, - Scale40, - Scale30, - Scale20, - Scale10, - Scale5, - } - public partial class frmMain : Form { private string[] args; @@ -64,10 +49,10 @@ namespace embroideryReader private Translation translation; - private float designScale = 1.0F; - private ScaleSetting designScaleSetting = ScaleSetting.Scale100; + private float designScale = 1.0f; private Size panel2LastUpdateSize; private bool maximizeChanged = false; + private int designRotation = 0; public frmMain() { @@ -87,7 +72,7 @@ namespace embroideryReader } this.Width = settings.windowWidth; this.Height = settings.windowHeight; - setDesignScaleSetting(settings.DesignScale, false); + setDesignScaleSetting(1.0f, settings.AutoScaleDesign, false); } private void Form1_Load(object sender, EventArgs e) @@ -162,8 +147,72 @@ namespace embroideryReader private void updateDesignImage() { - Bitmap tempImage = design.designToBitmap((float)settings.threadThickness, (settings.filterStiches), settings.filterStitchesThreshold, designScale); + Bitmap tempImage = design.designToBitmap((float)settings.threadThickness, (settings.filterStiches), settings.filterStitchesThreshold, 1.0f); + // Rotate image + switch (designRotation) + { + case 90: + tempImage.RotateFlip(RotateFlipType.Rotate90FlipNone); + break; + case 180: + tempImage.RotateFlip(RotateFlipType.Rotate180FlipNone); + break; + case 270: + tempImage.RotateFlip(RotateFlipType.Rotate270FlipNone); + break; + } + + // Scale image + if (fitToWindowToolStripMenuItem.Checked) + { + // Calculate size of image based on available drawing area + float windowWidth = panel2.Width - 3; + float windowHeight = panel2.Height - 3; + + // Figure out which dimension is more constrained + float widthScale = windowWidth / tempImage.Width; + float heightScale = windowHeight / tempImage.Height; + if (widthScale < heightScale) + { + designScale = widthScale; + } + else + { + designScale = heightScale; + } + } + + int width = (int)(tempImage.Width * designScale); + int height = (int)(tempImage.Height * designScale); + + if (width != tempImage.Width || height != tempImage.Height) + { + // Scale image code from http://stackoverflow.com/questions/1922040/resize-an-image-c-sharp + Rectangle destRect = new Rectangle(0, 0, width, height); + Bitmap destImage = new Bitmap(width, height); + + destImage.SetResolution(tempImage.HorizontalResolution, tempImage.VerticalResolution); + + using (var graphics = Graphics.FromImage(destImage)) + { + graphics.CompositingMode = CompositingMode.SourceCopy; + graphics.CompositingQuality = CompositingQuality.HighQuality; + graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; + graphics.SmoothingMode = SmoothingMode.HighQuality; + graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; + + using (var wrapMode = new ImageAttributes()) + { + wrapMode.SetWrapMode(WrapMode.TileFlipXY); + graphics.DrawImage(tempImage, destRect, 0, 0, tempImage.Width, tempImage.Height, GraphicsUnit.Pixel, wrapMode); + } + } + // Keep the scaled image and toss the intermediate image + tempImage = destImage; + } + + // Add transparency grid if (settings.transparencyGridEnabled) { DrawArea = new Bitmap(tempImage.Width, tempImage.Height); @@ -199,6 +248,9 @@ namespace embroideryReader panel1.Invalidate(); panel2LastUpdateSize = panel2.Size; + + // Update window title + this.Text = "File (" + (designScale * 100).ToString("0") + "%) " + APP_TITLE; } private void openFile(string filename) @@ -212,10 +264,6 @@ namespace embroideryReader { this.Text = System.IO.Path.GetFileName(filename) + " - " + APP_TITLE; - if(designScaleSetting == ScaleSetting.FitToWindow) - { - fitDesignToWindow(); - } updateDesignImage(); if (design.getFormatWarning()) @@ -298,7 +346,6 @@ namespace embroideryReader if (DrawArea != null) { e.Graphics.DrawImage(DrawArea, 0, 0); - //e.Graphics.DrawImage(DrawArea, e.Graphics.ClipBounds, e.Graphics.ClipBounds, GraphicsUnit.Pixel); } } @@ -409,8 +456,8 @@ namespace embroideryReader float dpiY = 100; double inchesPerMM = 0.03937007874015748031496062992126; e.Graphics.ScaleTransform((float)(dpiX * inchesPerMM * 0.1), (float)(dpiY * inchesPerMM * 0.1)); - Bitmap tempDrawArea = design.designToBitmap((float)settings.threadThickness, (settings.filterStiches), settings.filterStitchesThreshold, designScale); - e.Graphics.DrawImage(DrawArea, 30, 30); + Bitmap tempDrawArea = design.designToBitmap((float)settings.threadThickness, (settings.filterStiches), settings.filterStitchesThreshold, 1.0f); + e.Graphics.DrawImage(tempDrawArea, 30, 30); } } @@ -436,51 +483,28 @@ namespace embroideryReader private void refreshToolStripMenuItem_Click(object sender, EventArgs e) { - if (design != null && design.getStatus() == PesFile.statusEnum.Ready) - { - updateDesignImage(); - - if (design.getFormatWarning()) - { - toolStripStatusLabel1.Text = translation.GetTranslatedString(Translation.StringID.UNSUPPORTED_FORMAT); // "The format of this file is not completely supported" - } - else if (design.getColorWarning()) - { - toolStripStatusLabel1.Text = translation.GetTranslatedString(Translation.StringID.COLOR_WARNING); // "Colors shown for this design may be inaccurate" - } - else - { - toolStripStatusLabel1.Text = ""; - } - } + designRotation = 0; + updateDesignImage(); } private void rotateLeftToolStripMenuItem_Click(object sender, EventArgs e) { - Bitmap temp = new Bitmap(DrawArea.Height, DrawArea.Width); - Graphics g = Graphics.FromImage(temp); - g.RotateTransform(270.0f); - g.DrawImage(DrawArea, -DrawArea.Width, 0); - g.Dispose(); - DrawArea = temp; - int temp2 = panel1.Width; - panel1.Width = panel1.Height; - panel1.Height = temp2; - panel1.Invalidate(); + designRotation -= 90; + if(designRotation < 0) + { + designRotation += 360; + } + updateDesignImage(); } private void rotateRightToolStripMenuItem_Click(object sender, EventArgs e) { - Bitmap temp = new Bitmap(DrawArea.Height, DrawArea.Width); - Graphics g = Graphics.FromImage(temp); - g.RotateTransform(90.0f); - g.DrawImage(DrawArea, 0, -DrawArea.Height); - g.Dispose(); - DrawArea = temp; - int temp2 = panel1.Width; - panel1.Width = panel1.Height; - panel1.Height = temp2; - panel1.Invalidate(); + designRotation += 90; + if (designRotation >= 360) + { + designRotation -= 360; + } + updateDesignImage(); } private void showDebugInfoToolStripMenuItem_Click(object sender, EventArgs e) @@ -592,104 +616,20 @@ namespace embroideryReader aboutToolStripMenuItem.Text = translation.GetTranslatedString(Translation.StringID.MENU_ABOUT); } - // Calculate designScale so that the image fits on the screen - private void fitDesignToWindow() + private void setDesignScaleSetting(float scale, bool autoSize, bool updateDesign) { - int designWidth = design.GetWidth(); - int designHeight = design.GetHeight(); - float windowWidth = panel2.Width - 10; - float windowHeight = panel2.Height - 10; - - // Figure out which dimension is more constrained - float widthScale = windowWidth / designWidth; - float heightScale = windowHeight / designHeight; - if (widthScale < heightScale) + if(autoSize) { - designScale = widthScale; + fitToWindowToolStripMenuItem.Checked = true; + settings.AutoScaleDesign = true; } else { - designScale = heightScale; + fitToWindowToolStripMenuItem.Checked = false; + settings.AutoScaleDesign = false; + designScale = scale; } - } - - private void setDesignScaleSetting(ScaleSetting scale, bool updateDesign) - { - // Clear selected scale menu item - fitToWindowToolStripMenuItem.Checked = false; - scale100ToolStripMenuItem.Checked = false; - scale90ToolStripMenuItem.Checked = false; - scale80ToolStripMenuItem.Checked = false; - scale70ToolStripMenuItem.Checked = false; - scale60ToolStripMenuItem.Checked = false; - scale50ToolStripMenuItem.Checked = false; - scale40ToolStripMenuItem.Checked = false; - scale30ToolStripMenuItem.Checked = false; - scale20ToolStripMenuItem.Checked = false; - scale10ToolStripMenuItem.Checked = false; - scale5ToolStripMenuItem.Checked = false; - - designScaleSetting = scale; - if (updateDesign) - { - settings.DesignScale = scale; - } - - switch (scale) - { - case ScaleSetting.FitToWindow: - fitToWindowToolStripMenuItem.Checked = true; - if (updateDesign) - { - fitDesignToWindow(); - } - break; - case ScaleSetting.Scale100: - scale100ToolStripMenuItem.Checked = true; - designScale = 1.0f; - break; - case ScaleSetting.Scale90: - scale90ToolStripMenuItem.Checked = true; - designScale = 0.9f; - break; - case ScaleSetting.Scale80: - scale80ToolStripMenuItem.Checked = true; - designScale = 0.8f; - break; - case ScaleSetting.Scale70: - scale70ToolStripMenuItem.Checked = true; - designScale = 0.7f; - break; - case ScaleSetting.Scale60: - scale60ToolStripMenuItem.Checked = true; - designScale = 0.6f; - break; - case ScaleSetting.Scale50: - scale50ToolStripMenuItem.Checked = true; - designScale = 0.5f; - break; - case ScaleSetting.Scale40: - scale40ToolStripMenuItem.Checked = true; - designScale = 0.4f; - break; - case ScaleSetting.Scale30: - scale30ToolStripMenuItem.Checked = true; - designScale = 0.3f; - break; - case ScaleSetting.Scale20: - scale20ToolStripMenuItem.Checked = true; - designScale = 0.2f; - break; - case ScaleSetting.Scale10: - scale10ToolStripMenuItem.Checked = true; - designScale = 0.1f; - break; - case ScaleSetting.Scale5: - scale5ToolStripMenuItem.Checked = true; - designScale = 0.05f; - break; - } - + if (updateDesign) { updateDesignImage(); @@ -698,62 +638,65 @@ namespace embroideryReader private void scale100ToolStripMenuItem_Click(object sender, EventArgs e) { - setDesignScaleSetting(ScaleSetting.Scale100, true); + setDesignScaleSetting(1.0f, false, true); } private void scale90ToolStripMenuItem_Click(object sender, EventArgs e) { - setDesignScaleSetting(ScaleSetting.Scale90, true); + setDesignScaleSetting(0.9f, false, true); } private void scale80ToolStripMenuItem_Click(object sender, EventArgs e) { - setDesignScaleSetting(ScaleSetting.Scale80, true); + setDesignScaleSetting(0.8f, false, true); } private void scale70ToolStripMenuItem_Click(object sender, EventArgs e) { - setDesignScaleSetting(ScaleSetting.Scale70, true); + setDesignScaleSetting(0.7f, false, true); } private void scale60ToolStripMenuItem_Click(object sender, EventArgs e) { - setDesignScaleSetting(ScaleSetting.Scale60, true); + setDesignScaleSetting(0.6f, false, true); } private void scale50ToolStripMenuItem_Click(object sender, EventArgs e) { - setDesignScaleSetting(ScaleSetting.Scale50, true); + setDesignScaleSetting(0.5f, false, true); } private void scale40ToolStripMenuItem_Click(object sender, EventArgs e) { - setDesignScaleSetting(ScaleSetting.Scale40, true); + setDesignScaleSetting(0.4f, false, true); } private void scale30ToolStripMenuItem_Click(object sender, EventArgs e) { - setDesignScaleSetting(ScaleSetting.Scale30, true); + setDesignScaleSetting(0.3f, false, true); } private void scale20ToolStripMenuItem_Click(object sender, EventArgs e) { - setDesignScaleSetting(ScaleSetting.Scale20, true); + setDesignScaleSetting(0.2f, false, true); } private void scale10ToolStripMenuItem_Click(object sender, EventArgs e) { - setDesignScaleSetting(ScaleSetting.Scale10, true); + setDesignScaleSetting(0.1f, false, true); } private void scale5ToolStripMenuItem_Click(object sender, EventArgs e) { - setDesignScaleSetting(ScaleSetting.Scale5, true); + setDesignScaleSetting(0.05f, false, true); } private void fitToWindowToolStripMenuItem_Click(object sender, EventArgs e) { - setDesignScaleSetting(ScaleSetting.FitToWindow, true); + // Toggle checked state + fitToWindowToolStripMenuItem.Checked = !fitToWindowToolStripMenuItem.Checked; + // Update design + setDesignScaleSetting(1.0f, fitToWindowToolStripMenuItem.Checked, true); } private void frmMain_ResizeEnd(object sender, EventArgs e) @@ -761,9 +704,8 @@ namespace embroideryReader // Finished resize, update design scale if set to fit-to-window. // This event also captures window move events, so check if the size // of panel2 has changed to see if it's really a resize event. - if (designScaleSetting == ScaleSetting.FitToWindow && panel2LastUpdateSize != panel2.Size) + if (fitToWindowToolStripMenuItem.Checked && panel2LastUpdateSize != panel2.Size) { - fitDesignToWindow(); updateDesignImage(); } } @@ -778,9 +720,8 @@ namespace embroideryReader { maximizeChanged = false; - if (designScaleSetting == ScaleSetting.FitToWindow) + if (fitToWindowToolStripMenuItem.Checked) { - fitDesignToWindow(); updateDesignImage(); } } diff --git a/embroideryThumbs/PESThumbnail.cs b/embroideryThumbs/PESThumbnail.cs index 2580e00..6e430c8 100644 --- a/embroideryThumbs/PESThumbnail.cs +++ b/embroideryThumbs/PESThumbnail.cs @@ -175,7 +175,7 @@ namespace embroideryThumbs logfile.WriteLine("Called Extract"); logfile.Close(); - System.Drawing.Bitmap designBitmap = designFile.designToBitmap(3, false, 0, 100); + System.Drawing.Bitmap designBitmap = designFile.designToBitmap(3, false, 0, 1.0f); IntPtr hBmp = designBitmap.GetHbitmap();