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