From af9ade31131c7fb3ba42365dbe21ddd98068faaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tiago=20Concei=C3=A7=C3=A3o?= Date: Fri, 11 Sep 2020 15:14:49 +0100 Subject: [PATCH] ROI layer * (Add) Layer preview: Hold-Shift key to select an ROI (Region of interest) on image, that region will be used instead of whole image when running some tools * (Add) Layer preview: ESC key to clear ROI * (Add) Layer preview: Overlay text with hints for current action * (Change) Layer preview: Hold-Shift key to select issues and pick pixel position/brightness changed to Hold-Control key * (Change) Layer preview: Shift+click combination to zoom-in changed to Alt+click --- CHANGELOG.md | 8 ++ UVtools.Core/UVtools.Core.csproj | 6 +- UVtools.GUI/FrmMain.Designer.cs | 47 +++++++--- UVtools.GUI/FrmMain.cs | 93 ++++++++++++++----- UVtools.GUI/FrmMain.resx | 2 +- UVtools.GUI/Images/object-group-16x16.png | Bin 0 -> 139 bytes UVtools.GUI/Properties/AssemblyInfo.cs | 4 +- UVtools.GUI/Properties/Resources.Designer.cs | 10 ++ UVtools.GUI/Properties/Resources.resx | 69 +++++++------- UVtools.GUI/UVtools.GUI.csproj | 1 + 10 files changed, 161 insertions(+), 79 deletions(-) create mode 100644 UVtools.GUI/Images/object-group-16x16.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 4fd5e24..d01576c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## /08/2020 - v0.8.1.0 + +* (Add) Layer preview: Hold-Shift key to select an ROI (Region of interest) on image, that region will be used instead of whole image when running some tools +* (Add) Layer preview: ESC key to clear ROI +* (Add) Layer preview: Overlay text with hints for current action +* (Change) Layer preview: Hold-Shift key to select issues and pick pixel position/brightness changed to Hold-Control key +* (Change) Layer preview: Shift+click combination to zoom-in changed to Alt+click + ## 11/08/2020 - v0.8.0.0 * (Add) LGS and LGS30 file format for Longer Orange 10 and 30 (ezrec/uv3dp#105) diff --git a/UVtools.Core/UVtools.Core.csproj b/UVtools.Core/UVtools.Core.csproj index 2339fa2..cbbb729 100644 --- a/UVtools.Core/UVtools.Core.csproj +++ b/UVtools.Core/UVtools.Core.csproj @@ -10,12 +10,12 @@ https://github.com/sn4k3/UVtools https://github.com/sn4k3/UVtools MSLA/DLP, file analysis, repair, conversion and manipulation - 0.8.0.0 + 0.8.1.0 Copyright © 2020 PTRTECH UVtools.png AnyCPU;x64 - 0.8.0.0 - 0.8.0.0 + 0.8.1.0 + 0.8.1.0 diff --git a/UVtools.GUI/FrmMain.Designer.cs b/UVtools.GUI/FrmMain.Designer.cs index aa8a531..8a22929 100644 --- a/UVtools.GUI/FrmMain.Designer.cs +++ b/UVtools.GUI/FrmMain.Designer.cs @@ -61,6 +61,7 @@ namespace UVtools.GUI this.statusBar = new System.Windows.Forms.StatusStrip(); this.mainTable = new System.Windows.Forms.TableLayoutPanel(); this.scCenter = new System.Windows.Forms.SplitContainer(); + this.lbLayerImageOverlay = new System.Windows.Forms.Label(); this.pbLayer = new Cyotek.Windows.Forms.ImageBox(); this.tsLayer = new System.Windows.Forms.ToolStrip(); this.btnLayerImageExport = new System.Windows.Forms.ToolStripSplitButton(); @@ -246,7 +247,6 @@ namespace UVtools.GUI this.panelLayerNavigation = new System.Windows.Forms.Panel(); this.pbTrackerIssues = new System.Windows.Forms.PictureBox(); this.lbActualLayer = new System.Windows.Forms.Label(); - this.tbLayer = new UVtools.GUI.Controls.TrackBarEx(); this.lbInitialLayer = new System.Windows.Forms.Label(); this.panel2 = new System.Windows.Forms.Panel(); this.btnFindLayer = new System.Windows.Forms.Button(); @@ -257,6 +257,7 @@ namespace UVtools.GUI this.toolTipInformation = new System.Windows.Forms.ToolTip(this.components); this.layerScrollTimer = new System.Windows.Forms.Timer(this.components); this.mouseHoldTimer = new System.Windows.Forms.Timer(this.components); + this.tbLayer = new UVtools.GUI.Controls.TrackBarEx(); this.menu.SuspendLayout(); this.mainTable.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.scCenter)).BeginInit(); @@ -315,8 +316,8 @@ namespace UVtools.GUI this.tlRight.SuspendLayout(); this.panelLayerNavigation.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pbTrackerIssues)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.tbLayer)).BeginInit(); this.panel2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.tbLayer)).BeginInit(); this.SuspendLayout(); // // menu @@ -593,6 +594,7 @@ namespace UVtools.GUI // // scCenter.Panel1 // + this.scCenter.Panel1.Controls.Add(this.lbLayerImageOverlay); this.scCenter.Panel1.Controls.Add(this.pbLayer); this.scCenter.Panel1.Controls.Add(this.tsLayer); // @@ -604,6 +606,19 @@ namespace UVtools.GUI this.scCenter.SplitterDistance = 730; this.scCenter.TabIndex = 4; // + // lbLayerImageOverlay + // + this.lbLayerImageOverlay.AutoSize = true; + this.lbLayerImageOverlay.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.lbLayerImageOverlay.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lbLayerImageOverlay.Location = new System.Drawing.Point(13, 37); + this.lbLayerImageOverlay.Name = "lbLayerImageOverlay"; + this.lbLayerImageOverlay.Padding = new System.Windows.Forms.Padding(5); + this.lbLayerImageOverlay.Size = new System.Drawing.Size(70, 30); + this.lbLayerImageOverlay.TabIndex = 8; + this.lbLayerImageOverlay.Text = "Overlay"; + this.lbLayerImageOverlay.Visible = false; + // // pbLayer // this.pbLayer.AllowDoubleClick = true; @@ -616,6 +631,7 @@ namespace UVtools.GUI this.pbLayer.Size = new System.Drawing.Size(1176, 705); this.pbLayer.TabIndex = 7; this.pbLayer.Zoomed += new System.EventHandler(this.pbLayer_Zoomed); + this.pbLayer.KeyUp += new System.Windows.Forms.KeyEventHandler(this.EventKeyUp); this.pbLayer.MouseClick += new System.Windows.Forms.MouseEventHandler(this.EventMouseClick); this.pbLayer.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.EventMouseDoubleClick); this.pbLayer.MouseDown += new System.Windows.Forms.MouseEventHandler(this.EventMouseDown); @@ -2721,18 +2737,6 @@ namespace UVtools.GUI this.lbActualLayer.TabIndex = 9; this.lbActualLayer.Text = "?"; // - // tbLayer - // - this.tbLayer.Dock = System.Windows.Forms.DockStyle.Right; - this.tbLayer.Location = new System.Drawing.Point(93, 0); - this.tbLayer.Margin = new System.Windows.Forms.Padding(0); - this.tbLayer.Name = "tbLayer"; - this.tbLayer.Orientation = System.Windows.Forms.Orientation.Vertical; - this.tbLayer.Size = new System.Drawing.Size(45, 557); - this.tbLayer.TabIndex = 8; - this.tbLayer.TickStyle = System.Windows.Forms.TickStyle.TopLeft; - this.tbLayer.ValueChanged += new System.EventHandler(this.ValueChanged); - // // lbInitialLayer // this.lbInitialLayer.Dock = System.Windows.Forms.DockStyle.Fill; @@ -2823,6 +2827,18 @@ namespace UVtools.GUI this.mouseHoldTimer.Interval = 1000; this.mouseHoldTimer.Tick += new System.EventHandler(this.EventTimerTick); // + // tbLayer + // + this.tbLayer.Dock = System.Windows.Forms.DockStyle.Right; + this.tbLayer.Location = new System.Drawing.Point(93, 0); + this.tbLayer.Margin = new System.Windows.Forms.Padding(0); + this.tbLayer.Name = "tbLayer"; + this.tbLayer.Orientation = System.Windows.Forms.Orientation.Vertical; + this.tbLayer.Size = new System.Drawing.Size(45, 557); + this.tbLayer.TabIndex = 8; + this.tbLayer.TickStyle = System.Windows.Forms.TickStyle.TopLeft; + this.tbLayer.ValueChanged += new System.EventHandler(this.ValueChanged); + // // FrmMain // this.AllowDrop = true; @@ -2929,8 +2945,8 @@ namespace UVtools.GUI this.panelLayerNavigation.ResumeLayout(false); this.panelLayerNavigation.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pbTrackerIssues)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.tbLayer)).EndInit(); this.panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.tbLayer)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -3163,6 +3179,7 @@ namespace UVtools.GUI private System.Windows.Forms.ToolStripSplitButton btnLayerImageActions; private System.Windows.Forms.ToolStripSeparator toolStripSeparator26; private System.Windows.Forms.ToolStripButton btnLogVerbose; + private System.Windows.Forms.Label lbLayerImageOverlay; } } diff --git a/UVtools.GUI/FrmMain.cs b/UVtools.GUI/FrmMain.cs index 167cd82..fec5cce 100644 --- a/UVtools.GUI/FrmMain.cs +++ b/UVtools.GUI/FrmMain.cs @@ -19,6 +19,7 @@ using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using BrightIdeasSoftware; +using Cyotek.Windows.Forms; using Emgu.CV; using Emgu.CV.CvEnum; using Emgu.CV.Structure; @@ -146,7 +147,6 @@ namespace UVtools.GUI } ControlLeftLastTab = tbpThumbnailsAndInfo; - Clear(); btnLayerImageLayerDifference.Checked = Settings.Default.LayerDifferenceDefault; @@ -159,7 +159,7 @@ namespace UVtools.GUI btnLayerImageLayerOutlineHollowAreas.Checked = Settings.Default.OutlineHollowAreas; // Initialize pbLayer zoom levels to use the discrete factors from ZoomLevels - pbLayer.ZoomLevels = new Cyotek.Windows.Forms.ZoomLevelCollection(ZoomLevels); + pbLayer.ZoomLevels = new ZoomLevelCollection(ZoomLevels); // Initialize the zoom level used for autozoom based on the stored default settings. LockedZoomLevel = ZoomLevels[Settings.Default.ZoomLockLevel + ZoomLevelSkipCount]; @@ -1581,16 +1581,20 @@ namespace UVtools.GUI private void pbLayer_MouseMove(object sender, MouseEventArgs e) { - if (!pbLayer.IsPointInImage(e.Location) || (ModifierKeys & Keys.Shift) == 0) return; + if (!pbLayer.IsPointInImage(e.Location)) return; var location = pbLayer.PointToImage(e.Location); + + if ((ModifierKeys & Keys.Control) != 0) + { + Point realLocation = GetTransposedPoint(location); + tsLayerImageMouseLocation.Text = + $"{{X={realLocation.X}, Y={realLocation.Y}, B={ActualLayerImage.GetByte(realLocation)}}}"; + } + + if ((ModifierKeys & Keys.Shift) == 0) return; if (_lastPixelMouseLocation == e.Location) return; _lastPixelMouseLocation = e.Location; - Point realLocation = GetTransposedPoint(location); - - tsLayerImageMouseLocation.Text = - $"{{X={realLocation.X}, Y={realLocation.Y}, B={ActualLayerImage.GetByte(realLocation)}}}"; - // Bail here if we're not in a draw operation, if the mouse button is not either // left or right, or if the location of the mouse pointer is not within the image. if (tabControlPixelEditor.SelectedIndex != (int) PixelOperation.PixelOperationType.Drawing) return; @@ -2775,20 +2779,45 @@ namespace UVtools.GUI // the cross cursor is displayed even before the pblayer control has focus. // This ensures the user is aware that even in this case, a click in the layer // preview will draw a pixel. - if (ReferenceEquals(sender, this)) + if (ReferenceEquals(sender, this) && !ReferenceEquals(SlicerFile, null)) { // This event repeats for as long as the key is pressed, so if we've // already set the cursor from a previous key down event, just return. - if (pbLayer.Cursor == Cursors.Cross || pbLayer.Cursor == Cursors.Hand) return; + if (pbLayer.Cursor == Cursors.Cross || pbLayer.Cursor == Cursors.Hand || pbLayer.SelectionMode == ImageBoxSelectionMode.Rectangle) return; // Pixel Edit is active, Shift is down, and the cursor is over the image region. - if (e.KeyCode == Keys.ShiftKey && - pbLayer.ClientRectangle.Contains(pbLayer.PointToClient(MousePosition))) + if (pbLayer.ClientRectangle.Contains(pbLayer.PointToClient(MousePosition))) { + if (e.Modifiers == Keys.Shift) + { + if (btnLayerImagePixelEdit.Checked) + { + pbLayer.Cursor = Cursors.Cross; + pbLayer.PanMode = ImageBoxPanMode.None; + lbLayerImageOverlay.Text = "Pixel editing is on\n" + + "Click to draw"; + } + else + { + pbLayer.SelectionMode = ImageBoxSelectionMode.Rectangle; + lbLayerImageOverlay.Text = "ROI selection mode\n" + + "Press Esc to clear the ROI"; + } - pbLayer.Cursor = btnLayerImagePixelEdit.Checked ? Cursors.Cross : Cursors.Hand; - pbLayer.PanMode = Cyotek.Windows.Forms.ImageBoxPanMode.None; - //if (!ReferenceEquals(SlicerFile, null)) ShowLayer(); // Not needed? + lbLayerImageOverlay.Visible = true; + + return; + } + if (e.Modifiers == Keys.Control) + { + pbLayer.Cursor = Cursors.Hand; + pbLayer.PanMode = ImageBoxPanMode.None; + lbLayerImageOverlay.Text = "Issue selection mode\n" + + "Click on a issue to select it"; + + lbLayerImageOverlay.Visible = true; + return; + } } return; @@ -2798,15 +2827,29 @@ namespace UVtools.GUI private void EventKeyUp(object sender, KeyEventArgs e) { // As with EventKeyDown, we handle this event at the to top level - // to ensure cursor and pan functionaty are restored regardless + // to ensure cursor and pan functionality are restored regardless // of which form has focus when shift is released. if (ReferenceEquals(sender, this)) { - if (e.KeyCode == Keys.ShiftKey) + if (e.KeyCode == Keys.ShiftKey || e.KeyCode == Keys.ControlKey) { pbLayer.Cursor = Cursors.Default; - pbLayer.PanMode = Cyotek.Windows.Forms.ImageBoxPanMode.Left; + pbLayer.PanMode = ImageBoxPanMode.Left; + pbLayer.SelectionMode = ImageBoxSelectionMode.None; + lbLayerImageOverlay.Visible = false; //if (!ReferenceEquals(SlicerFile, null)) ShowLayer(); // Not needed? + e.Handled = true; + } + + return; + } + + if (ReferenceEquals(sender, pbLayer)) + { + if (e.KeyCode == Keys.Escape) + { + pbLayer.SelectNone(); + e.Handled = true; } return; @@ -3090,10 +3133,11 @@ namespace UVtools.GUI { if (ReferenceEquals(sender, pbLayer)) { - if ((ModifierKeys & Keys.Control) != 0) + if ((ModifierKeys & Keys.Alt) != 0) { - // CTRL click within pbLayer performs double click action + // ALT click within pbLayer performs double click action HandleMouseDoubleClick(sender, e); + return; } @@ -3102,8 +3146,7 @@ namespace UVtools.GUI // Check to see if the clicked location is an issue, // and if so, select it in the ListView. - if (!ReferenceEquals(tabControlLeft.SelectedTab, tabPagePixelEditor) && - (ModifierKeys & Keys.Shift) != 0) + if ((ModifierKeys & Keys.Control) != 0) SelectIssueAtPoint(location); return; @@ -3112,9 +3155,9 @@ namespace UVtools.GUI private void EventMouseDoubleClick(object sender, MouseEventArgs e) { - // Ignore double click if CTRL is pressed. Prevents CTRL-click + // Ignore double click if CTRL is pressed. Prevents ALT-click // events that emulate double click from firing twice. - if ((ModifierKeys & Keys.Control) != 0) return; + if ((ModifierKeys & Keys.Alt) != 0) return; HandleMouseDoubleClick(sender, e); } @@ -3196,7 +3239,7 @@ namespace UVtools.GUI //var point = pbLayer.PointToImage(location); Point realLocation = GetTransposedPoint(location); - + PixelOperation operation = null; Bitmap bmp = pbLayer.Image as Bitmap; diff --git a/UVtools.GUI/FrmMain.resx b/UVtools.GUI/FrmMain.resx index 124d9d2..881eac7 100644 --- a/UVtools.GUI/FrmMain.resx +++ b/UVtools.GUI/FrmMain.resx @@ -174,7 +174,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABk - FAAAAk1TRnQBSQFMAgEBBgEAAaABCgGgAQoBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + FAAAAk1TRnQBSQFMAgEBBgEAATABCwEwAQsBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA AwABIAMAAQEBAAEgBgABIC4AAxgBIgMwAUsDMAFMAzIBUDMAAQEDJAE2AysBQqwAAyIBMQNWAbkDXQHi AwAB/wMAAf8BKgEtASgB/gNTAawDTQGVAwABARgAAwkBDAMzAVIDUAGdA1cB6AMAAf4DKwH8Ay8BSqQA AyEBMANZAewBKwEuASkB+gNRAfcDUgH0A1MB8QNIAfYDQQH5AwAB/wNPAZsDAAEBCAADFQEdAz8BbgNV diff --git a/UVtools.GUI/Images/object-group-16x16.png b/UVtools.GUI/Images/object-group-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..e5cd1e9531e16b50d17c3f4efa2cd5dbc17118e5 GIT binary patch literal 139 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6f;?RuLn>} + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap object_group_16x16 { + get { + object obj = ResourceManager.GetObject("object-group-16x16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/UVtools.GUI/Properties/Resources.resx b/UVtools.GUI/Properties/Resources.resx index eae12a1..fed685c 100644 --- a/UVtools.GUI/Properties/Resources.resx +++ b/UVtools.GUI/Properties/Resources.resx @@ -139,14 +139,11 @@ ..\Images\mask-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\Back-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Images\move-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\filter-filled-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\cursor-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Images\Cancel-32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -184,8 +181,8 @@ ..\Images\Ok-24x24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\plus-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\blur-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Images\Save-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -208,14 +205,11 @@ ..\Images\SaveAs-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\pixel-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Images\gui\mutation_tophat.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\cursor-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\sync-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Images\settings-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -232,9 +226,6 @@ ..\Images\clipboard-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\sync-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Images\Exit-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -247,15 +238,15 @@ ..\Images\pattern-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\Extract-object-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Images\blur-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\pixel-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Images\checkbox-marked-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\burn-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Images\minus_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -265,12 +256,12 @@ ..\Images\trash-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\accept-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Images\file-image-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\Geometry-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Images\refresh-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -292,11 +283,23 @@ ..\Images\bowling-ball-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\Extract-object-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Images\file-import-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Images\undo-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Images\square-solid-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\burn-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\chessboard-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Images\filter-filled-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Images\arrow-down-double-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -310,8 +313,8 @@ ..\Images\Global-Network-icon-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\file-import-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\plus-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Images\photo-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -340,8 +343,8 @@ ..\Images\expand-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\Geometry-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\accept-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Images\copy_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -364,13 +367,13 @@ ..\Images\ladder-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\chessboard-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\Back-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Images\expand-alt-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Images\undo-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Images\object-group-16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/UVtools.GUI/UVtools.GUI.csproj b/UVtools.GUI/UVtools.GUI.csproj index 3589b23..85bfe97 100644 --- a/UVtools.GUI/UVtools.GUI.csproj +++ b/UVtools.GUI/UVtools.GUI.csproj @@ -488,6 +488,7 @@ +