fix:隐藏按钮导致的高光错位
This commit is contained in:
@@ -2971,13 +2971,13 @@ namespace Ink_Canvas
|
|||||||
quickColorPaletteMode = "single";
|
quickColorPaletteMode = "single";
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取实际按钮宽度,如果获取不到则使用默认值
|
// 获取实际按钮宽度,如果获取不到则使用默认值,同时考虑按钮的可见性
|
||||||
double cursorWidth = Cursor_Icon?.ActualWidth > 0 ? Cursor_Icon.ActualWidth : buttonWidth;
|
double cursorWidth = (Cursor_Icon?.Visibility == Visibility.Visible && Cursor_Icon?.ActualWidth > 0) ? Cursor_Icon.ActualWidth : 0;
|
||||||
double penWidth = Pen_Icon?.ActualWidth > 0 ? Pen_Icon.ActualWidth : buttonWidth;
|
double penWidth = (Pen_Icon?.Visibility == Visibility.Visible && Pen_Icon?.ActualWidth > 0) ? Pen_Icon.ActualWidth : 0;
|
||||||
double deleteWidth = SymbolIconDelete?.ActualWidth > 0 ? SymbolIconDelete.ActualWidth : buttonWidth;
|
double deleteWidth = (SymbolIconDelete?.Visibility == Visibility.Visible && SymbolIconDelete?.ActualWidth > 0) ? SymbolIconDelete.ActualWidth : 0;
|
||||||
double eraserWidth = Eraser_Icon?.ActualWidth > 0 ? Eraser_Icon.ActualWidth : buttonWidth;
|
double eraserWidth = (Eraser_Icon?.Visibility == Visibility.Visible && Eraser_Icon?.ActualWidth > 0) ? Eraser_Icon.ActualWidth : 0;
|
||||||
double eraserByStrokesWidth = EraserByStrokes_Icon?.ActualWidth > 0 ? EraserByStrokes_Icon.ActualWidth : buttonWidth;
|
double eraserByStrokesWidth = (EraserByStrokes_Icon?.Visibility == Visibility.Visible && EraserByStrokes_Icon?.ActualWidth > 0) ? EraserByStrokes_Icon.ActualWidth : 0;
|
||||||
double selectWidth = SymbolIconSelect?.ActualWidth > 0 ? SymbolIconSelect.ActualWidth : buttonWidth;
|
double selectWidth = (SymbolIconSelect?.Visibility == Visibility.Visible && SymbolIconSelect?.ActualWidth > 0) ? SymbolIconSelect.ActualWidth : 0;
|
||||||
|
|
||||||
// 获取高光的实际宽度
|
// 获取高光的实际宽度
|
||||||
double actualHighlightWidth = FloatingbarSelectionBG.ActualWidth > 0 ? FloatingbarSelectionBG.ActualWidth : highlightWidth;
|
double actualHighlightWidth = FloatingbarSelectionBG.ActualWidth > 0 ? FloatingbarSelectionBG.ActualWidth : highlightWidth;
|
||||||
@@ -3074,6 +3074,60 @@ namespace Ink_Canvas
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取当前选中的模式
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>当前选中的模式名称</returns>
|
||||||
|
public string GetCurrentSelectedMode()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// 检查当前编辑模式
|
||||||
|
if (inkCanvas.EditingMode == InkCanvasEditingMode.Select)
|
||||||
|
{
|
||||||
|
return "select";
|
||||||
|
}
|
||||||
|
else if (inkCanvas.EditingMode == InkCanvasEditingMode.Ink)
|
||||||
|
{
|
||||||
|
// 检查是否是荧光笔模式
|
||||||
|
if (drawingAttributes != null && drawingAttributes.IsHighlighter)
|
||||||
|
{
|
||||||
|
return "color";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return "pen";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (inkCanvas.EditingMode == InkCanvasEditingMode.EraseByPoint)
|
||||||
|
{
|
||||||
|
// 检查是面积擦还是线擦
|
||||||
|
if (Eraser_Icon != null && Eraser_Icon.Visibility == Visibility.Visible)
|
||||||
|
{
|
||||||
|
return "eraser";
|
||||||
|
}
|
||||||
|
else if (EraserByStrokes_Icon != null && EraserByStrokes_Icon.Visibility == Visibility.Visible)
|
||||||
|
{
|
||||||
|
return "eraserByStrokes";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (inkCanvas.EditingMode == InkCanvasEditingMode.None)
|
||||||
|
{
|
||||||
|
return "cursor";
|
||||||
|
}
|
||||||
|
else if (drawingShapeMode != 0)
|
||||||
|
{
|
||||||
|
return "shape";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
LogHelper.WriteLogToFile($"获取当前选中模式失败: {ex.Message}", LogHelper.LogType.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 触摸事件支持
|
#region 触摸事件支持
|
||||||
|
|||||||
@@ -2675,6 +2675,25 @@ namespace Ink_Canvas
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 在按钮可见性更新后,重新计算当前高光位置
|
||||||
|
// 延迟执行以确保UI更新完成
|
||||||
|
Dispatcher.BeginInvoke(new Action(() =>
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// 获取当前选中的模式并重新设置高光位置
|
||||||
|
string currentMode = GetCurrentSelectedMode();
|
||||||
|
if (!string.IsNullOrEmpty(currentMode))
|
||||||
|
{
|
||||||
|
SetFloatingBarHighlightPosition(currentMode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
LogHelper.WriteLogToFile($"重新计算高光位置失败: {ex.Message}", LogHelper.LogType.Error);
|
||||||
|
}
|
||||||
|
}), System.Windows.Threading.DispatcherPriority.Loaded);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user