improve:手掌擦
This commit is contained in:
@@ -9,6 +9,7 @@ using System.Windows.Ink;
|
|||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using Point = System.Windows.Point;
|
using Point = System.Windows.Point;
|
||||||
|
using System.Diagnostics;
|
||||||
|
|
||||||
namespace Ink_Canvas {
|
namespace Ink_Canvas {
|
||||||
public partial class MainWindow : Window {
|
public partial class MainWindow : Window {
|
||||||
@@ -72,7 +73,8 @@ namespace Ink_Canvas {
|
|||||||
if (!Settings.Advanced.EraserBindTouchMultiplier && Settings.Advanced.IsSpecialScreen)
|
if (!Settings.Advanced.EraserBindTouchMultiplier && Settings.Advanced.IsSpecialScreen)
|
||||||
eraserMultiplier = 1 / Settings.Advanced.TouchMultiplier;
|
eraserMultiplier = 1 / Settings.Advanced.TouchMultiplier;
|
||||||
|
|
||||||
if ((Settings.Advanced.TouchMultiplier != 0 || !Settings.Advanced.IsSpecialScreen) //启用特殊屏幕且触摸倍数为 0 时禁用橡皮
|
// 修复:只有多指且面积大时才允许手掌擦,单指始终为批注
|
||||||
|
if (dec != null && dec.Count >= 2 && (Settings.Advanced.TouchMultiplier != 0 || !Settings.Advanced.IsSpecialScreen)
|
||||||
&& boundWidth > BoundsWidth * 2.5) {
|
&& boundWidth > BoundsWidth * 2.5) {
|
||||||
if (drawingShapeMode == 0 && forceEraser) return;
|
if (drawingShapeMode == 0 && forceEraser) return;
|
||||||
currentPalmEraserShape = GetPalmRectangleEraserShape(eraserMultiplier);
|
currentPalmEraserShape = GetPalmRectangleEraserShape(eraserMultiplier);
|
||||||
@@ -82,14 +84,16 @@ namespace Ink_Canvas {
|
|||||||
if (inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint) {
|
if (inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint) {
|
||||||
inkCanvas.EditingMode = InkCanvasEditingMode.EraseByPoint;
|
inkCanvas.EditingMode = InkCanvasEditingMode.EraseByPoint;
|
||||||
}
|
}
|
||||||
|
Trace.WriteLine($"[PalmEraser] 触发手掌擦: TouchId={e.TouchDevice.Id}, boundWidth={boundWidth:F2}, eraserMultiplier={eraserMultiplier:F2}, EraserShape={currentPalmEraserShape?.GetType().Name}, TouchCount={dec.Count}");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
TouchDownPointsList[e.TouchDevice.Id] = InkCanvasEditingMode.None;
|
TouchDownPointsList[e.TouchDevice.Id] = InkCanvasEditingMode.None;
|
||||||
// 修复面积擦时不显示橡皮形状:无论 forcePointEraser 状态,均显示 50x50 橡皮
|
// 修复面积擦时不显示橡皮形状:无论 forcePointEraser 状态,均显示 50x50 橡皮
|
||||||
inkCanvas.EraserShape = new EllipseStylusShape(50, 50);
|
inkCanvas.EraserShape = new EllipseStylusShape(50, 50);
|
||||||
if (inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint) {
|
if (inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint) {
|
||||||
inkCanvas.EditingMode = InkCanvasEditingMode.None;
|
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
|
||||||
}
|
}
|
||||||
|
Trace.WriteLine($"[PalmEraser] 非手掌擦: TouchId={e.TouchDevice.Id}, boundWidth={boundWidth:F2}, eraserMultiplier={eraserMultiplier:F2}, TouchCount={(dec != null ? dec.Count : 0)}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user