修复温差图绘制时矩形框大小受缩放比例影响的问题
This commit is contained in:
@@ -652,10 +652,18 @@ namespace JoyD.Windows.CS
|
||||
// 获取相对于图像的坐标作为矩形起始点
|
||||
Point imagePoint = ControlPointToImagePoint(e.Location);
|
||||
|
||||
// 按下鼠标时初始框以鼠标位置为中心,大小为画笔大小
|
||||
// 计算初始矩形的左上角和右下角(以鼠标位置为中心,减去和加上画笔一半宽高)
|
||||
int halfBrushSize = _currentBrushSize / 2;
|
||||
_rectangleStartPoint = new Point(imagePoint.X - halfBrushSize, imagePoint.Y - halfBrushSize);
|
||||
// 计算画笔大小在图像坐标系统中的缩放值
|
||||
float scaleX = (float)picBoxTemp.Image.Width / picBoxTemp.ClientSize.Width;
|
||||
float scaleY = (float)picBoxTemp.Image.Height / picBoxTemp.ClientSize.Height;
|
||||
|
||||
// 按下鼠标时初始框以鼠标位置为中心,大小为画笔大小(根据缩放比例调整)
|
||||
float scaledHalfBrushSizeX = _currentBrushSize / 2 * scaleX;
|
||||
float scaledHalfBrushSizeY = _currentBrushSize / 2 * scaleY;
|
||||
|
||||
_rectangleStartPoint = new Point(
|
||||
(int)(imagePoint.X - scaledHalfBrushSizeX),
|
||||
(int)(imagePoint.Y - scaledHalfBrushSizeY)
|
||||
);
|
||||
_isDrawingRectangle = true;
|
||||
return;
|
||||
}
|
||||
@@ -1272,12 +1280,19 @@ namespace JoyD.Windows.CS
|
||||
// 获取相对于图像的当前坐标
|
||||
Point currentImagePoint = ControlPointToImagePoint(e.Location);
|
||||
|
||||
// 计算矩形参数:左上点是起笔方块的左上点,右下点是当前鼠标位置+画笔一半的宽高
|
||||
int halfBrushSize = _currentBrushSize / 2;
|
||||
// 计算矩形参数:左上点是起笔方块的左上点,右下点是当前鼠标位置+画笔一半的宽高(考虑缩放比例)
|
||||
float scaleX = (float)picBoxTemp.Image.Width / picBoxTemp.ClientSize.Width;
|
||||
float scaleY = (float)picBoxTemp.Image.Height / picBoxTemp.ClientSize.Height;
|
||||
float scaledHalfBrushSizeX = _currentBrushSize / 2 * scaleX;
|
||||
float scaledHalfBrushSizeY = _currentBrushSize / 2 * scaleY;
|
||||
|
||||
int x = _rectangleStartPoint.X;
|
||||
int y = _rectangleStartPoint.Y;
|
||||
// 右下角为当前鼠标位置+画笔一半的宽高
|
||||
Point endPoint = new Point(currentImagePoint.X + halfBrushSize, currentImagePoint.Y + halfBrushSize);
|
||||
// 右下角为当前鼠标位置+画笔一半的宽高(根据缩放比例调整)
|
||||
Point endPoint = new Point(
|
||||
(int)(currentImagePoint.X + scaledHalfBrushSizeX),
|
||||
(int)(currentImagePoint.Y + scaledHalfBrushSizeY)
|
||||
);
|
||||
int width = endPoint.X - x;
|
||||
int height = endPoint.Y - y;
|
||||
|
||||
@@ -1756,12 +1771,19 @@ namespace JoyD.Windows.CS
|
||||
// 获取相对于图像的当前坐标
|
||||
Point currentImagePoint = ControlPointToImagePoint(e.Location);
|
||||
|
||||
// 计算矩形参数:左上点是起笔方块的左上点,右下点是当前鼠标位置+画笔一半的宽高
|
||||
int halfBrushSize = _currentBrushSize / 2;
|
||||
// 计算矩形参数:左上点是起笔方块的左上点,右下点是当前鼠标位置+画笔一半的宽高(考虑缩放比例)
|
||||
float scaleX = (float)picBoxTemp.Image.Width / picBoxTemp.ClientSize.Width;
|
||||
float scaleY = (float)picBoxTemp.Image.Height / picBoxTemp.ClientSize.Height;
|
||||
float scaledHalfBrushSizeX = _currentBrushSize / 2 * scaleX;
|
||||
float scaledHalfBrushSizeY = _currentBrushSize / 2 * scaleY;
|
||||
|
||||
int x = _rectangleStartPoint.X;
|
||||
int y = _rectangleStartPoint.Y;
|
||||
// 右下角为当前鼠标位置+画笔一半的宽高
|
||||
Point endPoint = new Point(currentImagePoint.X + halfBrushSize, currentImagePoint.Y + halfBrushSize);
|
||||
// 右下角为当前鼠标位置+画笔一半的宽高(根据缩放比例调整)
|
||||
Point endPoint = new Point(
|
||||
(int)(currentImagePoint.X + scaledHalfBrushSizeX),
|
||||
(int)(currentImagePoint.Y + scaledHalfBrushSizeY)
|
||||
);
|
||||
int width = endPoint.X - x;
|
||||
int height = endPoint.Y - y;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user