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()
- {
+ // 直接实现更新图像的逻辑
}
///