优化温差图模式下矩形绘制逻辑:确保矩形区左上点和右下点符合min/max规则,严格按照用户要求实现
This commit is contained in:
@@ -1291,21 +1291,40 @@ namespace JoyD.Windows.CS
|
|||||||
float scaledHalfBrushSizeX = _currentBrushSize / 2 * scaleX;
|
float scaledHalfBrushSizeX = _currentBrushSize / 2 * scaleX;
|
||||||
float scaledHalfBrushSizeY = _currentBrushSize / 2 * scaleY;
|
float scaledHalfBrushSizeY = _currentBrushSize / 2 * scaleY;
|
||||||
|
|
||||||
// 计算起始点和结束点
|
// 计算光标块的左上点和右下点
|
||||||
Point startPoint = new Point(
|
Point cursorTopLeft = new Point(
|
||||||
(int)(_rectangleStartPoint.X),
|
(int)(currentImagePoint.X - scaledHalfBrushSizeX),
|
||||||
(int)(_rectangleStartPoint.Y)
|
(int)(currentImagePoint.Y - scaledHalfBrushSizeY)
|
||||||
);
|
);
|
||||||
Point endPoint = new Point(
|
Point cursorBottomRight = new Point(
|
||||||
(int)(currentImagePoint.X + scaledHalfBrushSizeX),
|
(int)(currentImagePoint.X + scaledHalfBrushSizeX),
|
||||||
(int)(currentImagePoint.Y + scaledHalfBrushSizeY)
|
(int)(currentImagePoint.Y + scaledHalfBrushSizeY)
|
||||||
);
|
);
|
||||||
|
|
||||||
// 无论绘制方向如何,都确保左上角为起始点
|
// 起笔方块的右下点
|
||||||
int x = Math.Min(startPoint.X, endPoint.X);
|
Point startBottomRight = new Point(
|
||||||
int y = Math.Min(startPoint.Y, endPoint.Y);
|
_rectangleStartPoint.X + (int)(_currentBrushSize * scaleX),
|
||||||
int width = Math.Abs(endPoint.X - startPoint.X);
|
_rectangleStartPoint.Y + (int)(_currentBrushSize * scaleY)
|
||||||
int height = Math.Abs(endPoint.Y - startPoint.Y);
|
);
|
||||||
|
|
||||||
|
// 确保矩形区有左上和右下两个点
|
||||||
|
// 矩形区左上点=min(矩形区左上点,光标块的左上点)
|
||||||
|
Point rectTopLeft = new Point(
|
||||||
|
Math.Min(_rectangleStartPoint.X, cursorTopLeft.X),
|
||||||
|
Math.Min(_rectangleStartPoint.Y, cursorTopLeft.Y)
|
||||||
|
);
|
||||||
|
|
||||||
|
// 矩形区右下点=max(矩形区右下点,光标块的右下点)
|
||||||
|
Point rectBottomRight = new Point(
|
||||||
|
Math.Max(startBottomRight.X, cursorBottomRight.X),
|
||||||
|
Math.Max(startBottomRight.Y, cursorBottomRight.Y)
|
||||||
|
);
|
||||||
|
|
||||||
|
// 计算矩形坐标和大小
|
||||||
|
int x = rectTopLeft.X;
|
||||||
|
int y = rectTopLeft.Y;
|
||||||
|
int width = rectBottomRight.X - rectTopLeft.X;
|
||||||
|
int height = rectBottomRight.Y - rectTopLeft.Y;
|
||||||
|
|
||||||
Rectangle rect = new Rectangle(x, y, width, height);
|
Rectangle rect = new Rectangle(x, y, width, height);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user