kopia lustrzana https://github.com/njcrawford/EmbroideryReader
Added Scale / Zoom menu as partial implementation of issue #4
rodzic
8c198c741b
commit
5d3f5886b8
|
@ -414,24 +414,27 @@ namespace PesFile
|
|||
}
|
||||
}
|
||||
|
||||
public Bitmap designToBitmap(Single threadThickness, bool filterUglyStitches, double filterUglyStitchesThreshold)
|
||||
public Bitmap designToBitmap(Single threadThickness, bool filterUglyStitches, double filterUglyStitchesThreshold, float scale)
|
||||
{
|
||||
Bitmap DrawArea;
|
||||
Graphics xGraph;
|
||||
int imageWidth = GetWidth() + (int)(threadThickness * 2);
|
||||
int imageHeight = GetHeight() + (int)(threadThickness * 2);
|
||||
int imageWidth = (int)((GetWidth() + (threadThickness * 2)) * scale);
|
||||
int imageHeight = (int)((GetHeight() + (threadThickness * 2)) * scale);
|
||||
float tempThreadThickness = threadThickness * scale;
|
||||
|
||||
DrawArea = new Bitmap(imageWidth, imageHeight);
|
||||
using (xGraph = Graphics.FromImage(DrawArea))
|
||||
{
|
||||
xGraph.TranslateTransform(threadThickness + translateStart.X, threadThickness + translateStart.Y);
|
||||
int translateX = (int)(translateStart.X * scale);
|
||||
int translateY = (int)(translateStart.Y * scale);
|
||||
xGraph.TranslateTransform(tempThreadThickness + translateX, tempThreadThickness + translateY);
|
||||
|
||||
// Draw smoother lines
|
||||
xGraph.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
|
||||
|
||||
for (int i = 0; i < blocks.Count; i++)
|
||||
{
|
||||
using (Pen tempPen = new Pen(blocks[i].color, threadThickness))
|
||||
using (Pen tempPen = new Pen(blocks[i].color, tempThreadThickness))
|
||||
{
|
||||
tempPen.StartCap = System.Drawing.Drawing2D.LineCap.Round;
|
||||
tempPen.EndCap = System.Drawing.Drawing2D.LineCap.Round;
|
||||
|
@ -446,7 +449,9 @@ namespace PesFile
|
|||
// This stitch is too long, so skip it
|
||||
continue;
|
||||
}
|
||||
xGraph.DrawLine(tempPen, thisStitch.a, thisStitch.b);
|
||||
Point tempA = new Point((int)(thisStitch.a.X * scale), (int)(thisStitch.a.Y * scale));
|
||||
Point tempB = new Point((int)(thisStitch.b.X * scale), (int)(thisStitch.b.Y * scale));
|
||||
xGraph.DrawLine(tempPen, tempA, tempB);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
private void InitializeComponent()
|
||||
{
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.lblStatus = new System.Windows.Forms.Label();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// button1
|
||||
|
@ -41,21 +42,33 @@
|
|||
this.button1.UseVisualStyleBackColor = true;
|
||||
this.button1.Click += new System.EventHandler(this.button1_Click);
|
||||
//
|
||||
// lblStatus
|
||||
//
|
||||
this.lblStatus.AutoSize = true;
|
||||
this.lblStatus.Location = new System.Drawing.Point(90, 179);
|
||||
this.lblStatus.Name = "lblStatus";
|
||||
this.lblStatus.Size = new System.Drawing.Size(38, 13);
|
||||
this.lblStatus.TabIndex = 1;
|
||||
this.lblStatus.Text = "Ready";
|
||||
//
|
||||
// Form1
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(284, 262);
|
||||
this.Controls.Add(this.lblStatus);
|
||||
this.Controls.Add(this.button1);
|
||||
this.Name = "Form1";
|
||||
this.Text = "Form1";
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.Label lblStatus;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -20,6 +20,11 @@ namespace TranslationBuilder
|
|||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
button1.Enabled = false;
|
||||
lblStatus.Text = "Building...";
|
||||
this.Invalidate();
|
||||
Application.DoEvents();
|
||||
|
||||
List<string> languageName = new List<string>();
|
||||
List<string> outputs = new List<string>();
|
||||
DataSet theData = new OdsReaderWriter().ReadOdsFile("..\\..\\..\\translations\\translations.ods");
|
||||
|
@ -71,7 +76,7 @@ namespace TranslationBuilder
|
|||
outfile.Close();
|
||||
//MessageBox.Show(languageName[i] + Environment.NewLine + outputs[i]);
|
||||
}
|
||||
MessageBox.Show("Done");
|
||||
lblStatus.Text = "Done";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -112,9 +112,9 @@
|
|||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
|
@ -40,7 +40,7 @@ namespace embroideryInfo
|
|||
if (args[0] == "--image" && args.Length > 1)
|
||||
{
|
||||
PesFile.PesFile design = new PesFile.PesFile(args[1]);
|
||||
Bitmap DrawArea = design.designToBitmap(5, false, 0);
|
||||
Bitmap DrawArea = design.designToBitmap(5, false, 0, 100);
|
||||
Bitmap temp = new Bitmap(DrawArea.Width, DrawArea.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
|
||||
Graphics tempGraph = Graphics.FromImage(temp);
|
||||
tempGraph.FillRectangle(Brushes.White, 0, 0, temp.Width, temp.Height);
|
||||
|
|
|
@ -53,6 +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 SECTION_TRANSPARENCY_GRID = "transparency grid";
|
||||
private const String SETTING_TRANSPARENCY_GRID_ENABLE = "enabled";
|
||||
|
@ -306,6 +307,48 @@ namespace embroideryReader
|
|||
}
|
||||
}
|
||||
|
||||
public ScaleSetting DesignScale
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
set
|
||||
{
|
||||
settings.setValue(SETTING_DESIGN_SCALE, value);
|
||||
}
|
||||
}
|
||||
|
||||
public bool transparencyGridEnabled
|
||||
{
|
||||
get
|
||||
|
|
|
@ -78,6 +78,8 @@ namespace embroideryReader
|
|||
ROTATE_LEFT,
|
||||
ROTATE_RIGHT,
|
||||
MENU_RESET,
|
||||
MENU_SCALE_ZOOM,
|
||||
MENU_FIT_TO_WINDOW,
|
||||
MENU_HELP,
|
||||
CHECK_UPDATE,
|
||||
SAVE_DEBUG,
|
||||
|
|
|
@ -49,6 +49,19 @@ namespace embroideryReader
|
|||
this.rotateLeftToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.rotateRightToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.refreshToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.zoomToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.fitToWindowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.scale100ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.scale90ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.scale80ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.scale70ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.scale60ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.scale50ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.scale40ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.scale30ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.scale20ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.scale10ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.scale5ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.checkForUpdateToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.saveDebugInfoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
|
@ -191,7 +204,8 @@ namespace embroideryReader
|
|||
this.viewToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.rotateLeftToolStripMenuItem,
|
||||
this.rotateRightToolStripMenuItem,
|
||||
this.refreshToolStripMenuItem});
|
||||
this.refreshToolStripMenuItem,
|
||||
this.zoomToolStripMenuItem});
|
||||
this.viewToolStripMenuItem.Name = "viewToolStripMenuItem";
|
||||
this.viewToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
|
||||
this.viewToolStripMenuItem.Text = "View";
|
||||
|
@ -220,6 +234,112 @@ namespace embroideryReader
|
|||
this.refreshToolStripMenuItem.Text = "Reset / Refresh";
|
||||
this.refreshToolStripMenuItem.Click += new System.EventHandler(this.refreshToolStripMenuItem_Click);
|
||||
//
|
||||
// zoomToolStripMenuItem
|
||||
//
|
||||
this.zoomToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.fitToWindowToolStripMenuItem,
|
||||
this.scale100ToolStripMenuItem,
|
||||
this.scale90ToolStripMenuItem,
|
||||
this.scale80ToolStripMenuItem,
|
||||
this.scale70ToolStripMenuItem,
|
||||
this.scale60ToolStripMenuItem,
|
||||
this.scale50ToolStripMenuItem,
|
||||
this.scale40ToolStripMenuItem,
|
||||
this.scale30ToolStripMenuItem,
|
||||
this.scale20ToolStripMenuItem,
|
||||
this.scale10ToolStripMenuItem,
|
||||
this.scale5ToolStripMenuItem});
|
||||
this.zoomToolStripMenuItem.Enabled = false;
|
||||
this.zoomToolStripMenuItem.Name = "zoomToolStripMenuItem";
|
||||
this.zoomToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||
this.zoomToolStripMenuItem.Text = "Scale / Zoom";
|
||||
//
|
||||
// fitToWindowToolStripMenuItem
|
||||
//
|
||||
this.fitToWindowToolStripMenuItem.Name = "fitToWindowToolStripMenuItem";
|
||||
this.fitToWindowToolStripMenuItem.Size = new System.Drawing.Size(146, 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.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.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.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.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.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.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.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.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.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.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.Text = "5%";
|
||||
this.scale5ToolStripMenuItem.Click += new System.EventHandler(this.scale5ToolStripMenuItem_Click);
|
||||
//
|
||||
// helpToolStripMenuItem
|
||||
//
|
||||
this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
|
@ -276,6 +396,7 @@ namespace embroideryReader
|
|||
this.panel2.Name = "panel2";
|
||||
this.panel2.Size = new System.Drawing.Size(572, 332);
|
||||
this.panel2.TabIndex = 10;
|
||||
this.panel2.Resize += new System.EventHandler(this.panel2_Resize);
|
||||
//
|
||||
// statusStrip1
|
||||
//
|
||||
|
@ -337,6 +458,7 @@ namespace embroideryReader
|
|||
this.Text = "Form1";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);
|
||||
this.Load += new System.EventHandler(this.Form1_Load);
|
||||
this.ResizeEnd += new System.EventHandler(this.frmMain_ResizeEnd);
|
||||
this.menuStrip1.ResumeLayout(false);
|
||||
this.menuStrip1.PerformLayout();
|
||||
this.panel2.ResumeLayout(false);
|
||||
|
@ -383,6 +505,19 @@ namespace embroideryReader
|
|||
private System.Windows.Forms.SaveFileDialog saveFileDialog1;
|
||||
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel2;
|
||||
private System.Windows.Forms.Timer timer1;
|
||||
private System.Windows.Forms.ToolStripMenuItem zoomToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem fitToWindowToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem scale100ToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem scale90ToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem scale80ToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem scale70ToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem scale60ToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem scale50ToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem scale40ToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem scale30ToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem scale20ToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem scale10ToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem scale5ToolStripMenuItem;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -35,6 +35,23 @@ using System.Runtime.InteropServices;
|
|||
|
||||
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;
|
||||
|
@ -47,6 +64,11 @@ namespace embroideryReader
|
|||
|
||||
private Translation translation;
|
||||
|
||||
private float designScale = 1.0F;
|
||||
private ScaleSetting designScaleSetting = ScaleSetting.Scale100;
|
||||
private Size panel2LastUpdateSize;
|
||||
private bool maximizeChanged = false;
|
||||
|
||||
public frmMain()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
@ -65,6 +87,7 @@ namespace embroideryReader
|
|||
}
|
||||
this.Width = settings.windowWidth;
|
||||
this.Height = settings.windowHeight;
|
||||
setDesignScaleSetting(settings.DesignScale, false);
|
||||
}
|
||||
|
||||
private void Form1_Load(object sender, EventArgs e)
|
||||
|
@ -79,6 +102,22 @@ namespace embroideryReader
|
|||
loadTranslatedStrings(settings.translation);
|
||||
}
|
||||
|
||||
// Override WndProc to capture maximize and restore events
|
||||
protected override void WndProc(ref Message m)
|
||||
{
|
||||
if (m.Msg == 0x0112) // WM_SYSCOMMAND
|
||||
{
|
||||
// Check your window state here
|
||||
if ((m.WParam.ToInt32() & 0xFFF0) == 0xF030 ||
|
||||
(m.WParam.ToInt32() & 0xFFF0) == 0xF020 ||
|
||||
(m.WParam.ToInt32() & 0xFFF0) == 0xF120) // Maximize event - SC_MAXIMIZE from Winuser.h
|
||||
{
|
||||
maximizeChanged = true;
|
||||
}
|
||||
}
|
||||
base.WndProc(ref m);
|
||||
}
|
||||
|
||||
public static bool checkColorFromStrings(string red, string green, string blue)
|
||||
{
|
||||
byte redByte;
|
||||
|
@ -123,7 +162,7 @@ namespace embroideryReader
|
|||
|
||||
private void updateDesignImage()
|
||||
{
|
||||
Bitmap tempImage = design.designToBitmap((float)settings.threadThickness, (settings.filterStiches), settings.filterStitchesThreshold);
|
||||
Bitmap tempImage = design.designToBitmap((float)settings.threadThickness, (settings.filterStiches), settings.filterStitchesThreshold, designScale);
|
||||
|
||||
if (settings.transparencyGridEnabled)
|
||||
{
|
||||
|
@ -155,9 +194,11 @@ namespace embroideryReader
|
|||
DrawArea = tempImage;
|
||||
}
|
||||
|
||||
panel1.Width = design.GetWidth() + (int)(settings.threadThickness * 2);
|
||||
panel1.Height = design.GetHeight() + (int)(settings.threadThickness * 2);
|
||||
panel1.Width = DrawArea.Width;
|
||||
panel1.Height = DrawArea.Height;
|
||||
panel1.Invalidate();
|
||||
|
||||
panel2LastUpdateSize = panel2.Size;
|
||||
}
|
||||
|
||||
private void openFile(string filename)
|
||||
|
@ -171,6 +212,10 @@ namespace embroideryReader
|
|||
{
|
||||
this.Text = System.IO.Path.GetFileName(filename) + " - " + APP_TITLE;
|
||||
|
||||
if(designScaleSetting == ScaleSetting.FitToWindow)
|
||||
{
|
||||
fitDesignToWindow();
|
||||
}
|
||||
updateDesignImage();
|
||||
|
||||
if (design.getFormatWarning())
|
||||
|
@ -192,6 +237,7 @@ namespace embroideryReader
|
|||
rotateLeftToolStripMenuItem.Enabled = true;
|
||||
rotateRightToolStripMenuItem.Enabled = true;
|
||||
refreshToolStripMenuItem.Enabled = true;
|
||||
zoomToolStripMenuItem.Enabled = true;
|
||||
showDebugInfoToolStripMenuItem.Enabled = true;
|
||||
saveAsBitmapToolStripMenuItem.Enabled = true;
|
||||
panel2.Select();
|
||||
|
@ -363,7 +409,7 @@ 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);
|
||||
Bitmap tempDrawArea = design.designToBitmap((float)settings.threadThickness, (settings.filterStiches), settings.filterStitchesThreshold, designScale);
|
||||
e.Graphics.DrawImage(DrawArea, 30, 30);
|
||||
}
|
||||
}
|
||||
|
@ -535,6 +581,8 @@ namespace embroideryReader
|
|||
rotateLeftToolStripMenuItem.Text = translation.GetTranslatedString(Translation.StringID.ROTATE_LEFT);
|
||||
rotateRightToolStripMenuItem.Text = translation.GetTranslatedString(Translation.StringID.ROTATE_RIGHT);
|
||||
refreshToolStripMenuItem.Text = translation.GetTranslatedString(Translation.StringID.MENU_RESET);
|
||||
zoomToolStripMenuItem.Text = translation.GetTranslatedString(Translation.StringID.MENU_SCALE_ZOOM);
|
||||
fitToWindowToolStripMenuItem.Text = translation.GetTranslatedString(Translation.StringID.MENU_FIT_TO_WINDOW);
|
||||
|
||||
// Help menu
|
||||
helpToolStripMenuItem.Text = translation.GetTranslatedString(Translation.StringID.MENU_HELP);
|
||||
|
@ -543,5 +591,199 @@ namespace embroideryReader
|
|||
showDebugInfoToolStripMenuItem.Text = translation.GetTranslatedString(Translation.StringID.SHOW_DEBUG);
|
||||
aboutToolStripMenuItem.Text = translation.GetTranslatedString(Translation.StringID.MENU_ABOUT);
|
||||
}
|
||||
|
||||
// Calculate designScale so that the image fits on the screen
|
||||
private void fitDesignToWindow()
|
||||
{
|
||||
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)
|
||||
{
|
||||
designScale = widthScale;
|
||||
}
|
||||
else
|
||||
{
|
||||
designScale = heightScale;
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
private void scale100ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
setDesignScaleSetting(ScaleSetting.Scale100, true);
|
||||
}
|
||||
|
||||
private void scale90ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
setDesignScaleSetting(ScaleSetting.Scale90, true);
|
||||
}
|
||||
|
||||
private void scale80ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
setDesignScaleSetting(ScaleSetting.Scale80, true);
|
||||
}
|
||||
|
||||
private void scale70ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
setDesignScaleSetting(ScaleSetting.Scale70, true);
|
||||
}
|
||||
|
||||
private void scale60ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
setDesignScaleSetting(ScaleSetting.Scale60, true);
|
||||
}
|
||||
|
||||
private void scale50ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
setDesignScaleSetting(ScaleSetting.Scale50, true);
|
||||
}
|
||||
|
||||
private void scale40ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
setDesignScaleSetting(ScaleSetting.Scale40, true);
|
||||
}
|
||||
|
||||
private void scale30ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
setDesignScaleSetting(ScaleSetting.Scale30, true);
|
||||
}
|
||||
|
||||
private void scale20ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
setDesignScaleSetting(ScaleSetting.Scale20, true);
|
||||
}
|
||||
|
||||
private void scale10ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
setDesignScaleSetting(ScaleSetting.Scale10, true);
|
||||
}
|
||||
|
||||
private void scale5ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
setDesignScaleSetting(ScaleSetting.Scale5, true);
|
||||
}
|
||||
|
||||
private void fitToWindowToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
setDesignScaleSetting(ScaleSetting.FitToWindow, true);
|
||||
}
|
||||
|
||||
private void frmMain_ResizeEnd(object sender, EventArgs e)
|
||||
{
|
||||
// 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)
|
||||
{
|
||||
fitDesignToWindow();
|
||||
updateDesignImage();
|
||||
}
|
||||
}
|
||||
|
||||
private void panel2_Resize(object sender, EventArgs e)
|
||||
{
|
||||
// This event is the one we really want, but it fires much too
|
||||
// frequently during a resize event. So, let ReziseEnd handle most
|
||||
// of the cases and only process this after a window maximize or
|
||||
// restore.
|
||||
if(maximizeChanged)
|
||||
{
|
||||
maximizeChanged = false;
|
||||
|
||||
if (designScaleSetting == ScaleSetting.FitToWindow)
|
||||
{
|
||||
fitDesignToWindow();
|
||||
updateDesignImage();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -175,7 +175,7 @@ namespace embroideryThumbs
|
|||
logfile.WriteLine("Called Extract");
|
||||
logfile.Close();
|
||||
|
||||
System.Drawing.Bitmap designBitmap = designFile.designToBitmap(3, false, 0);
|
||||
System.Drawing.Bitmap designBitmap = designFile.designToBitmap(3, false, 0, 100);
|
||||
|
||||
IntPtr hBmp = designBitmap.GetHbitmap();
|
||||
|
||||
|
|
|
@ -37,6 +37,8 @@ MENU_VIEW=View
|
|||
ROTATE_LEFT=Rotate left
|
||||
ROTATE_RIGHT=Rotate right
|
||||
MENU_RESET=Reset / Refresh
|
||||
MENU_SCALE_ZOOM=Scale / Zoom
|
||||
MENU_FIT_TO_WINDOW=Fit to window
|
||||
MENU_HELP=Help
|
||||
CHECK_UPDATE=Check for update
|
||||
SAVE_DEBUG=Save design debug info
|
||||
|
|
Plik binarny nie jest wyświetlany.
Ładowanie…
Reference in New Issue