diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs
index bb16fb4..f2a9805 100644
--- a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs
+++ b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs
@@ -146,20 +146,102 @@ namespace JoyD.Windows.CS
/// 10像素画笔大小按钮点击事件
///
private void BtnBrushSize10_Click(object sender, EventArgs e)
- {
+ {
_currentBrushSize = 10;
// 更新按钮选中状态
UpdateBrushSizeButtonSelection(10);
+
+ // 如果当前是擦除模式,更新光标大小
+ if (_isEraseMode)
+ {
+ try
+ {
+ // 使用白色作为擦除模式的光标颜色,以便在各种背景下都可见
+ Cursor customCursor = CreateCustomBrushCursor(_currentBrushSize, Color.White);
+
+ // 确保不重复设置相同的光标(避免资源泄漏)
+ if (picBoxTemp.Cursor != customCursor)
+ {
+ // 获取旧光标
+ Cursor oldCursor = picBoxTemp.Cursor;
+
+ // 先设置新光标
+ picBoxTemp.Cursor = customCursor;
+
+ // 只释放自定义光标,不释放系统光标
+ if (oldCursor != null && oldCursor != Cursors.Default &&
+ oldCursor != Cursors.Cross && oldCursor != Cursors.Hand &&
+ oldCursor != Cursors.IBeam && oldCursor != Cursors.WaitCursor)
+ {
+ oldCursor.Dispose();
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine("更新擦除模式光标大小时发生异常: " + ex.Message);
+ // 出现异常时设置为十字光标
+ try
+ {
+ if (picBoxTemp.Cursor != Cursors.Cross)
+ {
+ picBoxTemp.Cursor = Cursors.Cross;
+ }
+ }
+ catch {}
+ }
+ }
}
///
/// 15像素画笔大小按钮点击事件
///
private void BtnBrushSize15_Click(object sender, EventArgs e)
- {
+ {
_currentBrushSize = 15;
// 更新按钮选中状态
UpdateBrushSizeButtonSelection(15);
+
+ // 如果当前是擦除模式,更新光标大小
+ if (_isEraseMode)
+ {
+ try
+ {
+ // 使用白色作为擦除模式的光标颜色,以便在各种背景下都可见
+ Cursor customCursor = CreateCustomBrushCursor(_currentBrushSize, Color.White);
+
+ // 确保不重复设置相同的光标(避免资源泄漏)
+ if (picBoxTemp.Cursor != customCursor)
+ {
+ // 获取旧光标
+ Cursor oldCursor = picBoxTemp.Cursor;
+
+ // 先设置新光标
+ picBoxTemp.Cursor = customCursor;
+
+ // 只释放自定义光标,不释放系统光标
+ if (oldCursor != null && oldCursor != Cursors.Default &&
+ oldCursor != Cursors.Cross && oldCursor != Cursors.Hand &&
+ oldCursor != Cursors.IBeam && oldCursor != Cursors.WaitCursor)
+ {
+ oldCursor.Dispose();
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine("更新擦除模式光标大小时发生异常: " + ex.Message);
+ // 出现异常时设置为十字光标
+ try
+ {
+ if (picBoxTemp.Cursor != Cursors.Cross)
+ {
+ picBoxTemp.Cursor = Cursors.Cross;
+ }
+ }
+ catch {}
+ }
+ }
}
///
@@ -170,6 +252,47 @@ namespace JoyD.Windows.CS
_currentBrushSize = 25;
// 更新按钮选中状态
UpdateBrushSizeButtonSelection(25);
+
+ // 如果当前是擦除模式,更新光标大小
+ if (_isEraseMode)
+ {
+ try
+ {
+ // 使用白色作为擦除模式的光标颜色,以便在各种背景下都可见
+ Cursor customCursor = CreateCustomBrushCursor(_currentBrushSize, Color.White);
+
+ // 确保不重复设置相同的光标(避免资源泄漏)
+ if (picBoxTemp.Cursor != customCursor)
+ {
+ // 获取旧光标
+ Cursor oldCursor = picBoxTemp.Cursor;
+
+ // 先设置新光标
+ picBoxTemp.Cursor = customCursor;
+
+ // 只释放自定义光标,不释放系统光标
+ if (oldCursor != null && oldCursor != Cursors.Default &&
+ oldCursor != Cursors.Cross && oldCursor != Cursors.Hand &&
+ oldCursor != Cursors.IBeam && oldCursor != Cursors.WaitCursor)
+ {
+ oldCursor.Dispose();
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine("更新擦除模式光标大小时发生异常: " + ex.Message);
+ // 出现异常时设置为十字光标
+ try
+ {
+ if (picBoxTemp.Cursor != Cursors.Cross)
+ {
+ picBoxTemp.Cursor = Cursors.Cross;
+ }
+ }
+ catch {}
+ }
+ }
}
///
@@ -186,10 +309,66 @@ namespace JoyD.Windows.CS
if (_isEraseMode)
{
btnEraseTempDiff.ToolTipText = "擦除模式已启用,点击图片区域进行擦除(点击关闭)";
- }
+
+ // 在擦除模式下,更新光标以匹配当前画笔大小
+ try
+ {
+ // 使用白色作为擦除模式的光标颜色,以便在各种背景下都可见
+ Cursor customCursor = CreateCustomBrushCursor(_currentBrushSize, Color.White);
+
+ // 确保不重复设置相同的光标(避免资源泄漏)
+ if (picBoxTemp.Cursor != customCursor)
+ {
+ // 获取旧光标
+ Cursor oldCursor = picBoxTemp.Cursor;
+
+ // 先设置新光标
+ picBoxTemp.Cursor = customCursor;
+
+ // 只释放自定义光标,不释放系统光标
+ if (oldCursor != null && oldCursor != Cursors.Default &&
+ oldCursor != Cursors.Cross && oldCursor != Cursors.Hand &&
+ oldCursor != Cursors.IBeam && oldCursor != Cursors.WaitCursor)
+ {
+ oldCursor.Dispose();
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine("设置擦除模式光标时发生异常: " + ex.Message);
+ // 出现异常时设置为十字光标
+ try
+ {
+ if (picBoxTemp.Cursor != Cursors.Cross)
+ {
+ picBoxTemp.Cursor = Cursors.Cross;
+ }
+ }
+ catch {}
+ }
+ }
else
{
btnEraseTempDiff.ToolTipText = "使用透明色擦除温差图";
+ // 退出擦除模式时,可以恢复默认光标或其他光标
+ try
+ {
+ if (picBoxTemp.Cursor != Cursors.Default)
+ {
+ Cursor oldCursor = picBoxTemp.Cursor;
+ picBoxTemp.Cursor = Cursors.Default;
+
+ // 只释放自定义光标,不释放系统光标
+ if (oldCursor != null && oldCursor != Cursors.Default &&
+ oldCursor != Cursors.Cross && oldCursor != Cursors.Hand &&
+ oldCursor != Cursors.IBeam && oldCursor != Cursors.WaitCursor)
+ {
+ oldCursor.Dispose();
+ }
+ }
+ }
+ catch {}
}
// 重置上一个绘制点,确保下一次绘制/擦除是新的起点