优化温差图画框逻辑:鼠标定位点改进,实现初始画笔大小矩形以鼠标为中心,移动时右下角为鼠标位置+画笔一半宽高

This commit is contained in:
zqm
2025-11-10 17:05:31 +08:00
parent 003748c978
commit a838a5812d

View File

@@ -652,8 +652,10 @@ namespace JoyD.Windows.CS
// 获取相对于图像的坐标作为矩形起始点 // 获取相对于图像的坐标作为矩形起始点
Point imagePoint = ControlPointToImagePoint(e.Location); Point imagePoint = ControlPointToImagePoint(e.Location);
// 按下鼠标时初始框大小即为笔块大小 // 按下鼠标时初始框以鼠标位置为中心,大小为画笔大小
_rectangleStartPoint = imagePoint; // 计算初始矩形的左上角和右下角(以鼠标位置为中心,减去和加上画笔一半宽高)
int halfBrushSize = _currentBrushSize / 2;
_rectangleStartPoint = new Point(imagePoint.X - halfBrushSize, imagePoint.Y - halfBrushSize);
_isDrawingRectangle = true; _isDrawingRectangle = true;
return; return;
} }
@@ -1270,11 +1272,14 @@ namespace JoyD.Windows.CS
// 获取相对于图像的当前坐标 // 获取相对于图像的当前坐标
Point currentImagePoint = ControlPointToImagePoint(e.Location); Point currentImagePoint = ControlPointToImagePoint(e.Location);
// 计算矩形参数:左上点是起笔方块的左上点,右下点是收笔方块的右下点 // 计算矩形参数:左上点是起笔方块的左上点,右下点是当前鼠标位置+画笔一半的宽高
int halfBrushSize = _currentBrushSize / 2;
int x = _rectangleStartPoint.X; int x = _rectangleStartPoint.X;
int y = _rectangleStartPoint.Y; 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) if (width < 0)
@@ -1751,11 +1756,14 @@ namespace JoyD.Windows.CS
// 获取相对于图像的当前坐标 // 获取相对于图像的当前坐标
Point currentImagePoint = ControlPointToImagePoint(e.Location); Point currentImagePoint = ControlPointToImagePoint(e.Location);
// 计算矩形参数:左上点是起笔方块的左上点,右下点是收笔方块的右下点 // 计算矩形参数:左上点是起笔方块的左上点,右下点是当前鼠标位置+画笔一半的宽高
int halfBrushSize = _currentBrushSize / 2;
int x = _rectangleStartPoint.X; int x = _rectangleStartPoint.X;
int y = _rectangleStartPoint.Y; 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) if (width < 0)