From 61f341003bc271760b8dfa21511351a29b64886c Mon Sep 17 00:00:00 2001 From: zqm Date: Mon, 10 Nov 2025 17:23:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B8=A9=E5=B7=AE=E5=9B=BE?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E4=B8=8B=E7=9F=A9=E5=BD=A2=E7=BB=98=E5=88=B6?= =?UTF-8?q?=E6=96=B9=E5=90=91=E9=97=AE=E9=A2=98=EF=BC=9A=E7=A1=AE=E4=BF=9D?= =?UTF-8?q?=E6=97=A0=E8=AE=BA=E4=BB=8E=E5=B7=A6=E4=B8=8A=E5=88=B0=E5=8F=B3?= =?UTF-8?q?=E4=B8=8B=E8=BF=98=E6=98=AF=E5=8F=B3=E4=B8=8B=E5=88=B0=E5=B7=A6?= =?UTF-8?q?=E4=B8=8A=E7=BB=98=E5=88=B6=E7=9F=A9=E5=BD=A2=E9=83=BD=E7=AC=A6?= =?UTF-8?q?=E5=90=88=E9=A2=84=E6=9C=9F=E8=A1=8C=E4=B8=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CS/Framework4.0/Toprie/Toprie/Setting.cs | 52 +++++++------------ 1 file changed, 20 insertions(+), 32 deletions(-) diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs index 85c8a1b..3a68e7a 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs @@ -1291,27 +1291,21 @@ namespace JoyD.Windows.CS float scaledHalfBrushSizeX = _currentBrushSize / 2 * scaleX; float scaledHalfBrushSizeY = _currentBrushSize / 2 * scaleY; - int x = _rectangleStartPoint.X; - int y = _rectangleStartPoint.Y; - // 右下角为当前鼠标位置+画笔一半的宽高(基于光标大小转换) + // 计算起始点和结束点 + Point startPoint = new Point( + (int)(_rectangleStartPoint.X), + (int)(_rectangleStartPoint.Y) + ); Point endPoint = new Point( (int)(currentImagePoint.X + scaledHalfBrushSizeX), (int)(currentImagePoint.Y + scaledHalfBrushSizeY) ); - int width = endPoint.X - x; - int height = endPoint.Y - y; - // 确保矩形大小为正数,调整起点和大小 - if (width < 0) - { - x += width; - width = -width; - } - if (height < 0) - { - y += height; - height = -height; - } + // 无论绘制方向如何,都确保左上角为起始点 + int x = Math.Min(startPoint.X, endPoint.X); + int y = Math.Min(startPoint.Y, endPoint.Y); + int width = Math.Abs(endPoint.X - startPoint.X); + int height = Math.Abs(endPoint.Y - startPoint.Y); Rectangle rect = new Rectangle(x, y, width, height); @@ -1783,27 +1777,21 @@ namespace JoyD.Windows.CS float scaledHalfBrushSizeX = _currentBrushSize / 2 * scaleX; float scaledHalfBrushSizeY = _currentBrushSize / 2 * scaleY; - int x = _rectangleStartPoint.X; - int y = _rectangleStartPoint.Y; - // 右下角为当前鼠标位置+画笔一半的宽高(基于光标大小转换) + // 计算起始点和结束点 + Point startPoint = new Point( + (int)(_rectangleStartPoint.X), + (int)(_rectangleStartPoint.Y) + ); Point endPoint = new Point( (int)(currentImagePoint.X + scaledHalfBrushSizeX), (int)(currentImagePoint.Y + scaledHalfBrushSizeY) ); - int width = endPoint.X - x; - int height = endPoint.Y - y; - // 确保矩形大小为正数,调整起点和大小 - if (width < 0) - { - x += width; - width = -width; - } - if (height < 0) - { - y += height; - height = -height; - } + // 无论绘制方向如何,都确保左上角为起始点 + int x = Math.Min(startPoint.X, endPoint.X); + int y = Math.Min(startPoint.Y, endPoint.Y); + int width = Math.Abs(endPoint.X - startPoint.X); + int height = Math.Abs(endPoint.Y - startPoint.Y); Rectangle rect = new Rectangle(x, y, width, height);