优化Setting.cs代码:封装重复的画笔大小计算逻辑,简化按钮可见性更新,修复编译错误
This commit is contained in:
@@ -956,6 +956,27 @@ namespace JoyD.Windows.CS
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取根据图像缩放比例调整后的画笔大小
|
||||
/// </summary>
|
||||
/// <returns>调整后的画笔大小</returns>
|
||||
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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据状态设置按钮可见性
|
||||
/// </summary>
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新PictureBox图像的辅助方法
|
||||
/// 此方法必须在UI线程上执行
|
||||
/// </summary>
|
||||
private void UpdatePictureBoxImage()
|
||||
{
|
||||
// 直接实现更新图像的逻辑
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user