From fac66fafbd3e31cbd1b325f0483ff4b47b264d05 Mon Sep 17 00:00:00 2001 From: CJK_mkp <113243675+CJKmkp@users.noreply.github.com> Date: Wed, 18 Jun 2025 18:31:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E5=A2=A8=E8=BF=B9=E5=8E=8B=E6=84=9F?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MW_SimulatePressure&InkToShape.cs | 28 ++++++++++++++---- .../net472/InkCanvasForClass.g.resources | Bin 5181066 -> 5181066 bytes 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/Ink Canvas/MainWindow_cs/MW_SimulatePressure&InkToShape.cs b/Ink Canvas/MainWindow_cs/MW_SimulatePressure&InkToShape.cs index 78a4f5b6..6593b927 100644 --- a/Ink Canvas/MainWindow_cs/MW_SimulatePressure&InkToShape.cs +++ b/Ink Canvas/MainWindow_cs/MW_SimulatePressure&InkToShape.cs @@ -682,14 +682,32 @@ namespace Ink_Canvas { private StylusPointCollection CreateStraightLine(Point start, Point end) { StylusPointCollection points = new StylusPointCollection(); - // Create a more natural pressure profile for the line - if (Settings.InkToShape.IsInkToShapeNoFakePressureRectangle == true || penType == 1) { - points.Add(new StylusPoint(start.X, start.Y)); - points.Add(new StylusPoint(end.X, end.Y)); + // 根据是否启用压感触屏模式决定如何设置压感 + // 如果未启用压感触屏模式,则使用均匀粗细 + if (!Settings.Canvas.EnablePressureTouchMode || Settings.Canvas.DisablePressure || + Settings.InkToShape.IsInkToShapeNoFakePressureRectangle == true || penType == 1) { + // 使用均匀粗细(所有点压感值都是0.5f) + points.Add(new StylusPoint(start.X, start.Y, 0.5f)); + + // 可以添加一些额外的中间点使线条更平滑(均匀粗细) + double distance = GetDistance(start, end); + if (distance > 100) { + // 对于较长的线条,添加几个中间点 + for (int i = 1; i < 3; i++) { + double ratio = i / 3.0; + Point midPoint = new Point( + start.X + (end.X - start.X) * ratio, + start.Y + (end.Y - start.Y) * ratio); + points.Add(new StylusPoint(midPoint.X, midPoint.Y, 0.5f)); + } + } + + points.Add(new StylusPoint(end.X, end.Y, 0.5f)); } else { + // 启用了压感触屏模式,使用变化的粗细(原有行为) points.Add(new StylusPoint(start.X, start.Y, 0.4f)); - // Add a middle point with higher pressure + // 添加中点,压感值较高,使线条中间较粗 Point midPoint = new Point((start.X + end.X) / 2, (start.Y + end.Y) / 2); points.Add(new StylusPoint(midPoint.X, midPoint.Y, 0.8f)); diff --git a/Ink Canvas/obj/Debug/net472/InkCanvasForClass.g.resources b/Ink Canvas/obj/Debug/net472/InkCanvasForClass.g.resources index 587de5fa742212182df37e91368d88a253dc8500..a20b3b96c776035e5d6da3528641ace36cf90a03 100644 GIT binary patch delta 477 zcmZ9|yG{a85XSMay0Qw2;$0L)k5^b-SG?blMeqX0*3M!d!_va!bOsC+y`_nXr=hX1 z@d<2w32Xn!CTl|ROJ=^AX-2i$hQe#ii{$GcCGqBXU*({zJD&L<)T2-l80bPbO!OcM z3%%$=3~}^h00|6Y2uTcM1fv+kI3_TODWous8Kg0bIb<-81qdu+3Cmc)D%Oxi4mQ@Y z0SB9Kv4uRgv4dUgVIK!L#1W2hf>RW5h9W$aaE>x6xWFZ@aE+=Ks`m69zR+$uEote5 zFN9w=^;FG&B}A zK7p+-VeLQJWKAf3$;>x1&8Sw}PtB8xfXATWR zvgC%Lsqdbp9}Rn3v-Fbr?}H<^Eq|?!uzBOllz#e@)pRg<|B+_4V@cl{^