优化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>
|
||||||
/// 根据状态设置按钮可见性
|
/// 根据状态设置按钮可见性
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -3247,23 +3268,8 @@ namespace JoyD.Windows.CS
|
|||||||
g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
|
g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
|
||||||
|
|
||||||
// 计算考虑图像缩放比例的画笔大小
|
// 计算考虑图像缩放比例的画笔大小
|
||||||
// 由于我们需要让实际擦除区域在视觉上与光标块大小一致
|
// 使用封装的方法获取调整后的画笔大小和半大小
|
||||||
int adjustedBrushSize = _currentBrushSize;
|
int adjustedBrushSize = GetAdjustedBrushSize();
|
||||||
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 halfSize = adjustedBrushSize / 2;
|
int halfSize = adjustedBrushSize / 2;
|
||||||
|
|
||||||
// 绘制擦除区域(方形),与光标块保持一致的居中对齐方式
|
// 绘制擦除区域(方形),与光标块保持一致的居中对齐方式
|
||||||
@@ -3294,23 +3300,8 @@ namespace JoyD.Windows.CS
|
|||||||
selectedColor = (Color)tempDiffData[selectedRowIndex]["color"];
|
selectedColor = (Color)tempDiffData[selectedRowIndex]["color"];
|
||||||
}
|
}
|
||||||
|
|
||||||
// 计算考虑图像缩放比例的画笔大小
|
// 使用封装的方法获取调整后的画笔大小和半大小
|
||||||
int adjustedBrushSize = _currentBrushSize;
|
int adjustedBrushSize = GetAdjustedBrushSize();
|
||||||
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 halfSize = adjustedBrushSize / 2;
|
int halfSize = adjustedBrushSize / 2;
|
||||||
|
|
||||||
// 绘制区域(方形),与光标块保持一致的居中对齐方式
|
// 绘制区域(方形),与光标块保持一致的居中对齐方式
|
||||||
@@ -3371,25 +3362,8 @@ namespace JoyD.Windows.CS
|
|||||||
_selectedRegionIndex = -1;
|
_selectedRegionIndex = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新按钮的可见性
|
// 更新按钮的可见性(简化为单行条件调用,移除不必要的try-catch)
|
||||||
try
|
UpdateButtonsVisibility(_selectedRegionIndex != -1 ? 1 : 0);
|
||||||
{
|
|
||||||
bool isRegionSelected = (_selectedRegionIndex != -1);
|
|
||||||
if (isRegionSelected)
|
|
||||||
{
|
|
||||||
// 选中区域状态
|
|
||||||
UpdateButtonsVisibility(1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// 就绪状态
|
|
||||||
UpdateButtonsVisibility(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Console.WriteLine("更新按钮可见性失败: " + ex.Message);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 刷新绘制
|
// 刷新绘制
|
||||||
picBoxTemp.Invalidate();
|
picBoxTemp.Invalidate();
|
||||||
@@ -3506,7 +3480,10 @@ namespace JoyD.Windows.CS
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
this.BeginInvoke(new Action(UpdatePictureBoxImage));
|
this.BeginInvoke(new Action(() =>
|
||||||
|
{
|
||||||
|
// 直接在这里实现更新图像的逻辑
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
catch (ObjectDisposedException)
|
catch (ObjectDisposedException)
|
||||||
{
|
{
|
||||||
@@ -3515,15 +3492,7 @@ namespace JoyD.Windows.CS
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdatePictureBoxImage();
|
// 直接实现更新图像的逻辑
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 更新PictureBox图像的辅助方法
|
|
||||||
/// 此方法必须在UI线程上执行
|
|
||||||
/// </summary>
|
|
||||||
private void UpdatePictureBoxImage()
|
|
||||||
{
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user