From a838a5812d3a5d313c39ed34978c7f30d90e5d49 Mon Sep 17 00:00:00 2001 From: zqm Date: Mon, 10 Nov 2025 17:05:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=B8=A9=E5=B7=AE=E5=9B=BE?= =?UTF-8?q?=E7=94=BB=E6=A1=86=E9=80=BB=E8=BE=91=EF=BC=9A=E9=BC=A0=E6=A0=87?= =?UTF-8?q?=E5=AE=9A=E4=BD=8D=E7=82=B9=E6=94=B9=E8=BF=9B=EF=BC=8C=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E5=88=9D=E5=A7=8B=E7=94=BB=E7=AC=94=E5=A4=A7=E5=B0=8F?= =?UTF-8?q?=E7=9F=A9=E5=BD=A2=E4=BB=A5=E9=BC=A0=E6=A0=87=E4=B8=BA=E4=B8=AD?= =?UTF-8?q?=E5=BF=83=EF=BC=8C=E7=A7=BB=E5=8A=A8=E6=97=B6=E5=8F=B3=E4=B8=8B?= =?UTF-8?q?=E8=A7=92=E4=B8=BA=E9=BC=A0=E6=A0=87=E4=BD=8D=E7=BD=AE+?= =?UTF-8?q?=E7=94=BB=E7=AC=94=E4=B8=80=E5=8D=8A=E5=AE=BD=E9=AB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CS/Framework4.0/Toprie/Toprie/Setting.cs | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs index 1a30747..34f5bea 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs @@ -652,8 +652,10 @@ namespace JoyD.Windows.CS // 获取相对于图像的坐标作为矩形起始点 Point imagePoint = ControlPointToImagePoint(e.Location); - // 按下鼠标时初始框大小即为笔块大小 - _rectangleStartPoint = imagePoint; + // 按下鼠标时初始框以鼠标位置为中心,大小为画笔大小 + // 计算初始矩形的左上角和右下角(以鼠标位置为中心,减去和加上画笔一半宽高) + int halfBrushSize = _currentBrushSize / 2; + _rectangleStartPoint = new Point(imagePoint.X - halfBrushSize, imagePoint.Y - halfBrushSize); _isDrawingRectangle = true; return; } @@ -1270,11 +1272,14 @@ namespace JoyD.Windows.CS // 获取相对于图像的当前坐标 Point currentImagePoint = ControlPointToImagePoint(e.Location); - // 计算矩形参数:左上点是起笔方块的左上点,右下点是收笔方块的右下点 + // 计算矩形参数:左上点是起笔方块的左上点,右下点是当前鼠标位置+画笔一半的宽高 + int halfBrushSize = _currentBrushSize / 2; int x = _rectangleStartPoint.X; int y = _rectangleStartPoint.Y; - int width = currentImagePoint.X - _rectangleStartPoint.X; - int height = currentImagePoint.Y - _rectangleStartPoint.Y; + // 右下角为当前鼠标位置+画笔一半的宽高 + Point endPoint = new Point(currentImagePoint.X + halfBrushSize, currentImagePoint.Y + halfBrushSize); + int width = endPoint.X - x; + int height = endPoint.Y - y; // 确保矩形大小为正数,调整起点和大小 if (width < 0) @@ -1751,11 +1756,14 @@ namespace JoyD.Windows.CS // 获取相对于图像的当前坐标 Point currentImagePoint = ControlPointToImagePoint(e.Location); - // 计算矩形参数:左上点是起笔方块的左上点,右下点是收笔方块的右下点 + // 计算矩形参数:左上点是起笔方块的左上点,右下点是当前鼠标位置+画笔一半的宽高 + int halfBrushSize = _currentBrushSize / 2; int x = _rectangleStartPoint.X; int y = _rectangleStartPoint.Y; - int width = currentImagePoint.X - _rectangleStartPoint.X; - int height = currentImagePoint.Y - _rectangleStartPoint.Y; + // 右下角为当前鼠标位置+画笔一半的宽高 + Point endPoint = new Point(currentImagePoint.X + halfBrushSize, currentImagePoint.Y + halfBrushSize); + int width = endPoint.X - x; + int height = endPoint.Y - y; // 确保矩形大小为正数,调整起点和大小 if (width < 0)