From f84263bb261c885a5aa50cc25ce9073714e3c313 Mon Sep 17 00:00:00 2001 From: Manuel Kamper Date: Sat, 23 Mar 2019 15:06:22 +0100 Subject: [PATCH] =?UTF-8?q?Settings=20=C3=BCberarbeitet=20und=20Dateizuord?= =?UTF-8?q?nung=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cropper überarbeitet --- Mk0.Software.ImageSorter/App.config | 27 +++ Mk0.Software.ImageSorter/Cropper.Designer.cs | 5 +- Mk0.Software.ImageSorter/Main.Designer.cs | 2 +- Mk0.Software.ImageSorter/Main.resx | 9 - .../Mk0.Software.ImageSorter.csproj | 14 +- .../Properties/AssemblyInfo.cs | 2 +- .../Properties/Resources.Designer.cs | 2 +- .../Properties/Settings.Designer.cs | 14 +- .../Properties/Settings.settings | 3 + Mk0.Software.ImageSorter/Settings.Designer.cs | 158 +++++++++++++++--- Mk0.Software.ImageSorter/Settings.cs | 8 +- Mk0.Software.ImageSorter/Settings.resx | 15 ++ .../Vergleicher.Designer.cs | 11 ++ .../dll/Mk0.Tools.ImageCropper.dll | Bin 0 -> 20480 bytes .../dll/RubberBandControl.dll | Bin 20992 -> 0 bytes 15 files changed, 222 insertions(+), 48 deletions(-) create mode 100644 Mk0.Software.ImageSorter/dll/Mk0.Tools.ImageCropper.dll delete mode 100644 Mk0.Software.ImageSorter/dll/RubberBandControl.dll diff --git a/Mk0.Software.ImageSorter/App.config b/Mk0.Software.ImageSorter/App.config index d76fe52..452f2d1 100644 --- a/Mk0.Software.ImageSorter/App.config +++ b/Mk0.Software.ImageSorter/App.config @@ -2,6 +2,7 @@ +
@@ -9,6 +10,32 @@ + + + + + + + + + True + + + 0 + + + 0 + + + 0 + + + 0 + + + False + + diff --git a/Mk0.Software.ImageSorter/Cropper.Designer.cs b/Mk0.Software.ImageSorter/Cropper.Designer.cs index fb5749d..6f6c813 100644 --- a/Mk0.Software.ImageSorter/Cropper.Designer.cs +++ b/Mk0.Software.ImageSorter/Cropper.Designer.cs @@ -28,7 +28,7 @@ /// private void InitializeComponent() { - this.rubberBand1 = new RickApps.CropImage.RubberBand(); + this.rubberBand1 = new Mk0.Tools.ImageCropper.RubberBand(); this.label1 = new System.Windows.Forms.Label(); this.SuspendLayout(); // @@ -65,6 +65,7 @@ this.ClientSize = new System.Drawing.Size(800, 564); this.Controls.Add(this.label1); this.Controls.Add(this.rubberBand1); + this.Cursor = System.Windows.Forms.Cursors.Cross; this.MaximizeBox = false; this.MinimizeBox = false; this.MinimumSize = new System.Drawing.Size(816, 603); @@ -80,7 +81,7 @@ #endregion - private RickApps.CropImage.RubberBand rubberBand1; + private Mk0.Tools.ImageCropper.RubberBand rubberBand1; private System.Windows.Forms.Label label1; } } \ No newline at end of file diff --git a/Mk0.Software.ImageSorter/Main.Designer.cs b/Mk0.Software.ImageSorter/Main.Designer.cs index 0ef9da0..29c210d 100644 --- a/Mk0.Software.ImageSorter/Main.Designer.cs +++ b/Mk0.Software.ImageSorter/Main.Designer.cs @@ -472,7 +472,7 @@ this.MinimumSize = new System.Drawing.Size(983, 605); this.Name = "Main"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Image Sorter v1.26 | © 2015-2019 by manuelkamper.com"; + this.Text = "Image Sorter v1.27 | © 2015-2019 by manuelkamper.com"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Main_FormClosing); this.Shown += new System.EventHandler(this.Main_Shown); this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Main_KeyDown); diff --git a/Mk0.Software.ImageSorter/Main.resx b/Mk0.Software.ImageSorter/Main.resx index b97b9bb..f4a34a6 100644 --- a/Mk0.Software.ImageSorter/Main.resx +++ b/Mk0.Software.ImageSorter/Main.resx @@ -120,15 +120,6 @@ 180, 17 - - 329, 17 - - - 416, 17 - - - 503, 17 - 590, 17 diff --git a/Mk0.Software.ImageSorter/Mk0.Software.ImageSorter.csproj b/Mk0.Software.ImageSorter/Mk0.Software.ImageSorter.csproj index 011100a..89e6b0e 100644 --- a/Mk0.Software.ImageSorter/Mk0.Software.ImageSorter.csproj +++ b/Mk0.Software.ImageSorter/Mk0.Software.ImageSorter.csproj @@ -7,7 +7,7 @@ {1CCA2FD2-7F83-4CE6-8228-5267038D41A5} WinExe Properties - Image_Sorter + Mk0.Software.ImageSorter Image Sorter v4.6.1 512 @@ -84,6 +84,9 @@ ..\Mk0.Tools.Calculation.dll False + + dll\Mk0.Tools.ImageCropper.dll + ..\Mk0.Tools.Images.dll False @@ -96,20 +99,13 @@ ..\Mk0.Tools.SingleInstance.dll False - - ..\RubberBandControl.dll - False - - - - @@ -176,10 +172,10 @@ + - diff --git a/Mk0.Software.ImageSorter/Properties/AssemblyInfo.cs b/Mk0.Software.ImageSorter/Properties/AssemblyInfo.cs index fa3de5c..c25d0c0 100644 --- a/Mk0.Software.ImageSorter/Properties/AssemblyInfo.cs +++ b/Mk0.Software.ImageSorter/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern // übernehmen, indem Sie "*" eingeben: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.26.*")] +[assembly: AssemblyVersion("1.27.*")] //[assembly: AssemblyFileVersion("1.6.0.0")] diff --git a/Mk0.Software.ImageSorter/Properties/Resources.Designer.cs b/Mk0.Software.ImageSorter/Properties/Resources.Designer.cs index 17bd25d..c02786f 100644 --- a/Mk0.Software.ImageSorter/Properties/Resources.Designer.cs +++ b/Mk0.Software.ImageSorter/Properties/Resources.Designer.cs @@ -39,7 +39,7 @@ namespace Mk0.Software.ImageSorter.Properties { internal static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Image_Sorter.Properties.Resources", typeof(Resources).Assembly); + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Mk0.Software.ImageSorter.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; diff --git a/Mk0.Software.ImageSorter/Properties/Settings.Designer.cs b/Mk0.Software.ImageSorter/Properties/Settings.Designer.cs index 4a9bfd1..a70960b 100644 --- a/Mk0.Software.ImageSorter/Properties/Settings.Designer.cs +++ b/Mk0.Software.ImageSorter/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace Mk0.Software.ImageSorter.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.8.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); @@ -106,5 +106,17 @@ namespace Mk0.Software.ImageSorter.Properties { this["lastLeft"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool fileAssociation { + get { + return ((bool)(this["fileAssociation"])); + } + set { + this["fileAssociation"] = value; + } + } } } diff --git a/Mk0.Software.ImageSorter/Properties/Settings.settings b/Mk0.Software.ImageSorter/Properties/Settings.settings index 32dec53..ddd057c 100644 --- a/Mk0.Software.ImageSorter/Properties/Settings.settings +++ b/Mk0.Software.ImageSorter/Properties/Settings.settings @@ -23,5 +23,8 @@ 0 + + False + \ No newline at end of file diff --git a/Mk0.Software.ImageSorter/Settings.Designer.cs b/Mk0.Software.ImageSorter/Settings.Designer.cs index f991ee8..409368c 100644 --- a/Mk0.Software.ImageSorter/Settings.Designer.cs +++ b/Mk0.Software.ImageSorter/Settings.Designer.cs @@ -28,11 +28,24 @@ /// private void InitializeComponent() { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Settings)); this.checkBoxSingleInstance = new System.Windows.Forms.CheckBox(); this.label1 = new System.Windows.Forms.Label(); - this.button1 = new System.Windows.Forms.Button(); + this.buttonChangeTargetPath = new System.Windows.Forms.Button(); this.labelTargetPath = new System.Windows.Forms.Label(); this.folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.label2 = new System.Windows.Forms.Label(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.label3 = new System.Windows.Forms.Label(); + this.tabPage3 = new System.Windows.Forms.TabPage(); + this.checkBoxFileAssociation = new System.Windows.Forms.CheckBox(); + this.label4 = new System.Windows.Forms.Label(); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.tabPage2.SuspendLayout(); + this.tabPage3.SuspendLayout(); this.SuspendLayout(); // // checkBoxSingleInstance @@ -40,52 +53,137 @@ this.checkBoxSingleInstance.AutoSize = true; this.checkBoxSingleInstance.Checked = true; this.checkBoxSingleInstance.CheckState = System.Windows.Forms.CheckState.Checked; - this.checkBoxSingleInstance.Location = new System.Drawing.Point(12, 12); + this.checkBoxSingleInstance.Location = new System.Drawing.Point(9, 54); this.checkBoxSingleInstance.Name = "checkBoxSingleInstance"; - this.checkBoxSingleInstance.Size = new System.Drawing.Size(366, 17); + this.checkBoxSingleInstance.Size = new System.Drawing.Size(136, 17); this.checkBoxSingleInstance.TabIndex = 0; - this.checkBoxSingleInstance.Text = "SingleInstance - ImageSorter kann nur ein Mal gleichzeitig geöffnet sein."; + this.checkBoxSingleInstance.Text = "Einzelinstanz aktivieren"; this.checkBoxSingleInstance.UseVisualStyleBackColor = true; this.checkBoxSingleInstance.CheckedChanged += new System.EventHandler(this.CheckBoxSingleInstance_CheckedChanged); // // label1 // this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(9, 40); + this.label1.Location = new System.Drawing.Point(6, 49); this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(52, 13); + this.label1.Size = new System.Drawing.Size(48, 13); this.label1.TabIndex = 1; - this.label1.Text = "Ziel-Pfad:"; + this.label1.Text = "Zielpfad:"; // - // button1 + // buttonChangeTargetPath // - this.button1.Location = new System.Drawing.Point(12, 61); - this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(75, 23); - this.button1.TabIndex = 2; - this.button1.Text = "Ändern"; - this.button1.UseVisualStyleBackColor = true; - this.button1.Click += new System.EventHandler(this.Button1_Click); + this.buttonChangeTargetPath.Location = new System.Drawing.Point(9, 71); + this.buttonChangeTargetPath.Name = "buttonChangeTargetPath"; + this.buttonChangeTargetPath.Size = new System.Drawing.Size(75, 23); + this.buttonChangeTargetPath.TabIndex = 2; + this.buttonChangeTargetPath.Text = "Ändern"; + this.buttonChangeTargetPath.UseVisualStyleBackColor = true; + this.buttonChangeTargetPath.Click += new System.EventHandler(this.ButtonChangeTargetPath_Click); // // labelTargetPath // this.labelTargetPath.AutoSize = true; this.labelTargetPath.ForeColor = System.Drawing.Color.SteelBlue; - this.labelTargetPath.Location = new System.Drawing.Point(67, 40); + this.labelTargetPath.Location = new System.Drawing.Point(64, 49); this.labelTargetPath.Name = "labelTargetPath"; this.labelTargetPath.Size = new System.Drawing.Size(120, 13); this.labelTargetPath.TabIndex = 3; this.labelTargetPath.Text = ""; // + // tabControl1 + // + this.tabControl1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Controls.Add(this.tabPage3); + this.tabControl1.Location = new System.Drawing.Point(12, 12); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(506, 133); + this.tabControl1.TabIndex = 4; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.label2); + this.tabPage1.Controls.Add(this.checkBoxSingleInstance); + this.tabPage1.Location = new System.Drawing.Point(4, 22); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(498, 107); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "Einzelinstanz"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(6, 3); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(489, 39); + this.label2.TabIndex = 0; + this.label2.Text = resources.GetString("label2.Text"); + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.label3); + this.tabPage2.Controls.Add(this.labelTargetPath); + this.tabPage2.Controls.Add(this.buttonChangeTargetPath); + this.tabPage2.Controls.Add(this.label1); + this.tabPage2.Location = new System.Drawing.Point(4, 22); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(3); + this.tabPage2.Size = new System.Drawing.Size(498, 107); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "Zielpfad"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(6, 3); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(474, 39); + this.label3.TabIndex = 0; + this.label3.Text = resources.GetString("label3.Text"); + // + // tabPage3 + // + this.tabPage3.Controls.Add(this.checkBoxFileAssociation); + this.tabPage3.Controls.Add(this.label4); + this.tabPage3.Location = new System.Drawing.Point(4, 22); + this.tabPage3.Name = "tabPage3"; + this.tabPage3.Size = new System.Drawing.Size(498, 107); + this.tabPage3.TabIndex = 2; + this.tabPage3.Text = "Dateizuordnung"; + this.tabPage3.UseVisualStyleBackColor = true; + // + // checkBoxFileAssociation + // + this.checkBoxFileAssociation.AutoSize = true; + this.checkBoxFileAssociation.Location = new System.Drawing.Point(8, 56); + this.checkBoxFileAssociation.Name = "checkBoxFileAssociation"; + this.checkBoxFileAssociation.Size = new System.Drawing.Size(150, 17); + this.checkBoxFileAssociation.TabIndex = 1; + this.checkBoxFileAssociation.Text = "Dateizuordnung aktivieren"; + this.checkBoxFileAssociation.UseVisualStyleBackColor = true; + this.checkBoxFileAssociation.CheckedChanged += new System.EventHandler(this.CheckBoxFileAssociation_CheckedChanged); + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(5, 3); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(473, 39); + this.label4.TabIndex = 0; + this.label4.Text = resources.GetString("label4.Text"); + // // Settings // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(412, 96); - this.Controls.Add(this.labelTargetPath); - this.Controls.Add(this.button1); - this.Controls.Add(this.label1); - this.Controls.Add(this.checkBoxSingleInstance); + this.ClientSize = new System.Drawing.Size(530, 157); + this.Controls.Add(this.tabControl1); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.MaximizeBox = false; this.MinimizeBox = false; @@ -95,8 +193,14 @@ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "ImageSorter | Einstellungen"; this.Shown += new System.EventHandler(this.Settings_Shown); + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.tabPage1.PerformLayout(); + this.tabPage2.ResumeLayout(false); + this.tabPage2.PerformLayout(); + this.tabPage3.ResumeLayout(false); + this.tabPage3.PerformLayout(); this.ResumeLayout(false); - this.PerformLayout(); } @@ -104,8 +208,16 @@ private System.Windows.Forms.CheckBox checkBoxSingleInstance; private System.Windows.Forms.Label label1; - private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button buttonChangeTargetPath; private System.Windows.Forms.Label labelTargetPath; private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.TabPage tabPage3; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.CheckBox checkBoxFileAssociation; + private System.Windows.Forms.Label label4; } } \ No newline at end of file diff --git a/Mk0.Software.ImageSorter/Settings.cs b/Mk0.Software.ImageSorter/Settings.cs index 862a8c2..6c612be 100644 --- a/Mk0.Software.ImageSorter/Settings.cs +++ b/Mk0.Software.ImageSorter/Settings.cs @@ -25,7 +25,7 @@ namespace Mk0.Software.ImageSorter checkBoxSingleInstance.Checked = Properties.Settings.Default.singleInstance; } - private void Button1_Click(object sender, EventArgs e) + private void ButtonChangeTargetPath_Click(object sender, EventArgs e) { DialogResult result = folderBrowserDialog.ShowDialog(); if (result == DialogResult.OK) @@ -41,5 +41,11 @@ namespace Mk0.Software.ImageSorter Properties.Settings.Default.singleInstance = checkBoxSingleInstance.Checked; Properties.Settings.Default.Save(); } + + private void CheckBoxFileAssociation_CheckedChanged(object sender, EventArgs e) + { + Properties.Settings.Default.fileAssociation = checkBoxFileAssociation.Checked; + Properties.Settings.Default.Save(); + } } } diff --git a/Mk0.Software.ImageSorter/Settings.resx b/Mk0.Software.ImageSorter/Settings.resx index b8f6272..9a45def 100644 --- a/Mk0.Software.ImageSorter/Settings.resx +++ b/Mk0.Software.ImageSorter/Settings.resx @@ -120,4 +120,19 @@ 17, 17 + + Der Zielpfad legt fest, wohin die Bilder verschoben werden sollen. Im Zielpfad sollten Unterordner +vorhanden sein, welche dann im ImageSorter als Ziel zum Verschieben verfügbar sind. Der Zielpfad +wird beim nächsten Start von ImageSorter wieder automatisch ausgewählt. + + + Mit der Option Einzelinstanz legen sie fest, dass der ImageSorter nur ein Mal geöffnet sein kann. Wenn +sie weitere Bilder öffnen, öffnen sich diese dann im selben Fenster. Wenn diese Option deaktiviert ist, +öffnen sich jedes Bild in einem eigenen Fenster. + + + Wenn sie die Dateizuordnung aktivieren, werden Bildtypen mit ImageSorter verbunden. Sie können +dann Bilder mittels Doppelklick bzw. rechter Maustaste "Öffnen mit..." mit dem ImageSorter direkt +öffnen. + \ No newline at end of file diff --git a/Mk0.Software.ImageSorter/Vergleicher.Designer.cs b/Mk0.Software.ImageSorter/Vergleicher.Designer.cs index 424a32a..5ac972b 100644 --- a/Mk0.Software.ImageSorter/Vergleicher.Designer.cs +++ b/Mk0.Software.ImageSorter/Vergleicher.Designer.cs @@ -45,6 +45,8 @@ // // label1 // + this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); this.label1.AutoSize = true; this.label1.Location = new System.Drawing.Point(12, 9); this.label1.MaximumSize = new System.Drawing.Size(606, 0); @@ -55,6 +57,7 @@ // // button1 // + this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.button1.DialogResult = System.Windows.Forms.DialogResult.Yes; this.button1.Location = new System.Drawing.Point(15, 325); this.button1.Name = "button1"; @@ -66,6 +69,7 @@ // // button2 // + this.button2.Anchor = System.Windows.Forms.AnchorStyles.Bottom; this.button2.DialogResult = System.Windows.Forms.DialogResult.No; this.button2.Location = new System.Drawing.Point(233, 325); this.button2.Name = "button2"; @@ -77,6 +81,7 @@ // // button3 // + this.button3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.button3.DialogResult = System.Windows.Forms.DialogResult.Abort; this.button3.Location = new System.Drawing.Point(453, 325); this.button3.Name = "button3"; @@ -88,6 +93,8 @@ // // pictureBox1 // + this.pictureBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); this.pictureBox1.Location = new System.Drawing.Point(15, 82); this.pictureBox1.Name = "pictureBox1"; this.pictureBox1.Size = new System.Drawing.Size(288, 237); @@ -97,6 +104,8 @@ // // pictureBox2 // + this.pictureBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Right))); this.pictureBox2.Location = new System.Drawing.Point(319, 82); this.pictureBox2.Name = "pictureBox2"; this.pictureBox2.Size = new System.Drawing.Size(288, 237); @@ -116,6 +125,7 @@ // // label3 // + this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.label3.AutoSize = true; this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label3.Location = new System.Drawing.Point(316, 69); @@ -136,6 +146,7 @@ // // labelzielinfo // + this.labelzielinfo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.labelzielinfo.AutoSize = true; this.labelzielinfo.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.labelzielinfo.Location = new System.Drawing.Point(372, 69); diff --git a/Mk0.Software.ImageSorter/dll/Mk0.Tools.ImageCropper.dll b/Mk0.Software.ImageSorter/dll/Mk0.Tools.ImageCropper.dll new file mode 100644 index 0000000000000000000000000000000000000000..ad247dedce259af986194d3b0d8c1faf2c713fe0 GIT binary patch literal 20480 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