diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs
index 7c328ef..d2e8dc5 100644
--- a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs
+++ b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs
@@ -1375,49 +1375,6 @@ namespace JoyD.Windows.CS
}
}
- ///
- /// 在两点之间绘制方形路径,用于模拟方形画笔效果
- ///
- private void DrawLineAsRectangles(Graphics g, Brush brush, Point startPoint, Point endPoint, int halfSize)
- {
- // 计算两点之间的距离和方向
- int dx = Math.Abs(endPoint.X - startPoint.X);
- int dy = Math.Abs(endPoint.Y - startPoint.Y);
- int sx = startPoint.X < endPoint.X ? 1 : -1;
- int sy = startPoint.Y < endPoint.Y ? 1 : -1;
- int err = dx - dy;
- int e2;
-
- Point currentPoint = startPoint;
-
- // 使用Bresenham算法遍历直线上的每个点
- while (true)
- {
- // 在当前点绘制方形
- g.FillRectangle(brush,
- currentPoint.X - halfSize,
- currentPoint.Y - halfSize,
- halfSize * 2,
- halfSize * 2);
-
- // 检查是否到达终点
- if (currentPoint.X == endPoint.X && currentPoint.Y == endPoint.Y)
- break;
-
- e2 = 2 * err;
- if (e2 > -dy)
- {
- err -= dy;
- currentPoint.X += sx;
- }
- if (e2 < dx)
- {
- err += dx;
- currentPoint.Y += sy;
- }
- }
- }
-
///
/// 将控件坐标转换为图像坐标
///
@@ -1703,22 +1660,23 @@ namespace JoyD.Windows.CS
if (_lastDrawPoint == Point.Empty)
{
_lastDrawPoint = imagePoint;
- // 绘制起始点的方形(擦除区域)
- int halfSize = adjustedBrushSize / 2;
- g.FillRectangle(Brushes.Transparent,
- imagePoint.X - halfSize,
- imagePoint.Y - halfSize,
+ // 绘制起始点的圆形(擦除区域)
+ int radius = adjustedBrushSize / 2;
+ g.FillEllipse(Brushes.Transparent,
+ imagePoint.X - radius,
+ imagePoint.Y - radius,
adjustedBrushSize,
adjustedBrushSize);
}
else
{
- // 绘制方形路径进行擦除
- int halfSize = adjustedBrushSize / 2;
- using (SolidBrush brush = new SolidBrush(Color.Transparent))
- {
- // 计算两点之间的直线区域,并绘制方形
- DrawLineAsRectangles(g, brush, _lastDrawPoint, imagePoint, halfSize);
+ // 使用透明色绘制粗线条进行擦除,使用调整后的画笔大小
+ using (Pen pen = new Pen(Color.Transparent, adjustedBrushSize))
+ {
+ pen.StartCap = LineCap.Round;
+ pen.EndCap = LineCap.Round;
+ pen.LineJoin = LineJoin.Round;
+ g.DrawLine(pen, _lastDrawPoint, imagePoint);
}
// 更新上一个点
_lastDrawPoint = imagePoint;
@@ -1740,23 +1698,18 @@ namespace JoyD.Windows.CS
if (_lastDrawPoint == Point.Empty)
{
_lastDrawPoint = imagePoint;
- // 绘制起始点的方形
- int halfSize = _currentBrushSize / 2;
- g.FillRectangle(new SolidBrush(selectedColor),
- imagePoint.X - halfSize,
- imagePoint.Y - halfSize,
+ // 绘制起始点的圆形
+ int radius = _currentBrushSize / 2;
+ g.FillEllipse(new SolidBrush(selectedColor),
+ imagePoint.X - radius,
+ imagePoint.Y - radius,
_currentBrushSize,
_currentBrushSize);
}
else
{
- // 绘制方形路径
- int halfSize = _currentBrushSize / 2;
- using (SolidBrush brush = new SolidBrush(selectedColor))
- {
- // 计算两点之间的直线区域,并绘制方形
- DrawLineAsRectangles(g, brush, _lastDrawPoint, imagePoint, halfSize);
- }
+ // 绘制连线
+ g.DrawLine(pen, _lastDrawPoint, imagePoint);
// 更新上一个点
_lastDrawPoint = imagePoint;
}