From f8b0efcab01c97822d59a4ad7c088702ec42c68f Mon Sep 17 00:00:00 2001 From: zqm Date: Tue, 11 Nov 2025 14:02:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96Setting.cs=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=EF=BC=9A=E5=B0=81=E8=A3=85=E9=87=8D=E5=A4=8D=E7=9A=84=E7=94=BB?= =?UTF-8?q?=E7=AC=94=E5=A4=A7=E5=B0=8F=E8=AE=A1=E7=AE=97=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E7=AE=80=E5=8C=96=E6=8C=89=E9=92=AE=E5=8F=AF=E8=A7=81?= =?UTF-8?q?=E6=80=A7=E6=9B=B4=E6=96=B0=EF=BC=8C=E4=BF=AE=E5=A4=8D=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CS/Framework4.0/Toprie/Toprie/Setting.cs | 95 +++++++------------ 1 file changed, 32 insertions(+), 63 deletions(-) diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs index 37e3c7d..bfe7cb9 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs @@ -956,6 +956,27 @@ namespace JoyD.Windows.CS } } + /// + /// 获取根据图像缩放比例调整后的画笔大小 + /// + /// 调整后的画笔大小 + private int GetAdjustedBrushSize() + { int adjustedBrushSize = _currentBrushSize; + if (picBoxTemp.Image != null) + { // 计算控件到图像的缩放比例(图像实际大小与控件显示大小的比例) + float scaleX = (float)picBoxTemp.Image.Width / picBoxTemp.ClientSize.Width; + float scaleY = (float)picBoxTemp.Image.Height / picBoxTemp.ClientSize.Height; + + // 使用缩放比例调整画笔大小,使绘制区域在视觉上与光标块一致 + adjustedBrushSize = (int)(_currentBrushSize * Math.Min(scaleX, scaleY)); + + // 确保调整后的画笔大小不会太小或太大 + adjustedBrushSize = Math.Max(adjustedBrushSize, 1); // 最小1像素 + adjustedBrushSize = Math.Min(adjustedBrushSize, 50); // 最大50像素 + } + return adjustedBrushSize; + } + /// /// 根据状态设置按钮可见性 /// @@ -3247,23 +3268,8 @@ namespace JoyD.Windows.CS g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy; // 计算考虑图像缩放比例的画笔大小 - // 由于我们需要让实际擦除区域在视觉上与光标块大小一致 - int adjustedBrushSize = _currentBrushSize; - if (picBoxTemp.Image != null) - { - // 计算控件到图像的缩放比例(图像实际大小与控件显示大小的比例) - float scaleX = (float)picBoxTemp.Image.Width / picBoxTemp.ClientSize.Width; - float scaleY = (float)picBoxTemp.Image.Height / picBoxTemp.ClientSize.Height; - - // 使用缩放比例调整画笔大小,使擦除区域在视觉上与光标块一致 - adjustedBrushSize = (int)(_currentBrushSize * Math.Min(scaleX, scaleY)); - - // 确保调整后的画笔大小不会太小或太大 - adjustedBrushSize = Math.Max(adjustedBrushSize, 1); // 最小1像素 - adjustedBrushSize = Math.Min(adjustedBrushSize, 50); // 最大50像素 - } - - // 计算方形位置,使其居中 + // 使用封装的方法获取调整后的画笔大小和半大小 + int adjustedBrushSize = GetAdjustedBrushSize(); int halfSize = adjustedBrushSize / 2; // 绘制擦除区域(方形),与光标块保持一致的居中对齐方式 @@ -3294,23 +3300,8 @@ namespace JoyD.Windows.CS selectedColor = (Color)tempDiffData[selectedRowIndex]["color"]; } - // 计算考虑图像缩放比例的画笔大小 - int adjustedBrushSize = _currentBrushSize; - if (picBoxTemp.Image != null) - { - // 计算控件到图像的缩放比例(图像实际大小与控件显示大小的比例) - float scaleX = (float)picBoxTemp.Image.Width / picBoxTemp.ClientSize.Width; - float scaleY = (float)picBoxTemp.Image.Height / picBoxTemp.ClientSize.Height; - - // 使用缩放比例调整画笔大小,使绘制区域在视觉上与光标块一致 - adjustedBrushSize = (int)(_currentBrushSize * Math.Min(scaleX, scaleY)); - - // 确保调整后的画笔大小不会太小或太大 - adjustedBrushSize = Math.Max(adjustedBrushSize, 1); // 最小1像素 - adjustedBrushSize = Math.Min(adjustedBrushSize, 50); // 最大50像素 - } - - // 计算方形位置,使其居中 + // 使用封装的方法获取调整后的画笔大小和半大小 + int adjustedBrushSize = GetAdjustedBrushSize(); int halfSize = adjustedBrushSize / 2; // 绘制区域(方形),与光标块保持一致的居中对齐方式 @@ -3371,25 +3362,8 @@ namespace JoyD.Windows.CS _selectedRegionIndex = -1; } - // 更新按钮的可见性 - try - { - bool isRegionSelected = (_selectedRegionIndex != -1); - if (isRegionSelected) - { - // 选中区域状态 - UpdateButtonsVisibility(1); - } - else - { - // 就绪状态 - UpdateButtonsVisibility(0); - } - } - catch (Exception ex) - { - Console.WriteLine("更新按钮可见性失败: " + ex.Message); - } + // 更新按钮的可见性(简化为单行条件调用,移除不必要的try-catch) + UpdateButtonsVisibility(_selectedRegionIndex != -1 ? 1 : 0); // 刷新绘制 picBoxTemp.Invalidate(); @@ -3506,7 +3480,10 @@ namespace JoyD.Windows.CS { try { - this.BeginInvoke(new Action(UpdatePictureBoxImage)); + this.BeginInvoke(new Action(() => + { + // 直接在这里实现更新图像的逻辑 + })); } catch (ObjectDisposedException) { @@ -3515,15 +3492,7 @@ namespace JoyD.Windows.CS return; } - UpdatePictureBoxImage(); - } - - /// - /// 更新PictureBox图像的辅助方法 - /// 此方法必须在UI线程上执行 - /// - private void UpdatePictureBoxImage() - { + // 直接实现更新图像的逻辑 } ///