优化温差图画框逻辑:鼠标定位点改进,实现初始画笔大小矩形以鼠标为中心,移动时右下角为鼠标位置+画笔一半宽高
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user