From 54807d237daeaed9de4d150dd476bcca7500a14c Mon Sep 17 00:00:00 2001 From: zqm Date: Tue, 11 Nov 2025 10:47:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B8=A9=E5=B7=AE=E5=9B=BE?= =?UTF-8?q?=E7=BB=98=E5=88=B6=E6=97=B6=E7=BA=BF=E6=9D=A1=E4=B8=AD=E6=96=AD?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=8C=E5=9C=A8=E6=99=AE=E9=80=9A=E7=BB=98?= =?UTF-8?q?=E5=88=B6=E6=A8=A1=E5=BC=8F=E4=B8=8B=E5=BA=94=E7=94=A8=E6=AD=A3?= =?UTF-8?q?=E7=A1=AE=E7=9A=84=E7=BC=A9=E6=94=BE=E6=AF=94=E4=BE=8B=E8=AE=A1?= =?UTF-8?q?=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CS/Framework4.0/Toprie/Toprie/Setting.cs | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs index d2e8dc5..f14a80e 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs @@ -1686,28 +1686,44 @@ namespace JoyD.Windows.CS g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver; } else - { + { // 普通绘制模式 - using (Pen pen = new Pen(selectedColor, _currentBrushSize)) - { + // 计算考虑图像缩放比例的画笔大小 + int adjustedBrushSize = _currentBrushSize; + if (picBoxTemp.Image != null) + { + // 计算控件到图像的缩放比例(图像实际大小与控件显示大小的比例) + float scaleX = (float)picBoxTemp.Image.Width / picBoxTemp.ClientSize.Width; + float scaleY = (float)picBoxTemp.Image.Height / picBoxTemp.ClientSize.Height; + + // 使用缩放比例调整画笔大小,使绘制区域在视觉上与光标块一致 + adjustedBrushSize = (int)(_currentBrushSize * Math.Min(scaleX, scaleY)); + + // 确保调整后的画笔大小不会太小或太大 + adjustedBrushSize = Math.Max(adjustedBrushSize, 1); // 最小1像素 + adjustedBrushSize = Math.Min(adjustedBrushSize, 50); // 最大50像素 + } + + using (Pen pen = new Pen(selectedColor, adjustedBrushSize)) + { pen.StartCap = LineCap.Round; pen.EndCap = LineCap.Round; pen.LineJoin = LineJoin.Round; // 如果是首次绘制或上一个点无效,记录当前点作为起点 if (_lastDrawPoint == Point.Empty) - { + { _lastDrawPoint = imagePoint; // 绘制起始点的圆形 - int radius = _currentBrushSize / 2; + int radius = adjustedBrushSize / 2; g.FillEllipse(new SolidBrush(selectedColor), imagePoint.X - radius, imagePoint.Y - radius, - _currentBrushSize, - _currentBrushSize); + adjustedBrushSize, + adjustedBrushSize); } else - { + { // 绘制连线 g.DrawLine(pen, _lastDrawPoint, imagePoint); // 更新上一个点