From c35117bc0dde7b7e1bd9305fd11228f6f7014477 Mon Sep 17 00:00:00 2001 From: zqm Date: Wed, 12 Nov 2025 09:51:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B8=A9=E5=B7=AE=E5=9B=BE?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E5=92=8C=E5=8A=A0=E8=BD=BD=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=BB=A5=E7=A1=AE=E4=BF=9D=E6=98=BE=E7=A4=BA=E4=B8=80=E8=87=B4?= =?UTF-8?q?=E6=80=A7=EF=BC=9A1.=20=E4=BF=9D=E5=AD=98=E6=97=B6=E4=B8=8D?= =?UTF-8?q?=E5=86=8D=E6=AF=8F=E9=9A=9410=E4=B8=AA=E5=83=8F=E7=B4=A0?= =?UTF-8?q?=E9=87=87=E6=A0=B7=EF=BC=8C=E8=80=8C=E6=98=AF=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E6=89=80=E6=9C=89=E9=9D=9E=E9=80=8F=E6=98=8E=E5=83=8F=E7=B4=A0?= =?UTF-8?q?=202.=20=E5=8A=A0=E8=BD=BD=E6=97=B6=E7=9B=B4=E6=8E=A5=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E5=83=8F=E7=B4=A0=E7=82=B9=E9=A2=9C=E8=89=B2=E8=80=8C?= =?UTF-8?q?=E4=B8=8D=E6=98=AF=E5=A1=AB=E5=85=85=E5=8C=BA=E5=9F=9F=EF=BC=8C?= =?UTF-8?q?=E7=A1=AE=E4=BF=9D=E5=87=86=E7=A1=AE=E8=BF=98=E5=8E=9F=E5=8E=9F?= =?UTF-8?q?=E5=A7=8B=E7=BB=98=E5=88=B6=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CS/Framework4.0/Toprie/Toprie/Setting.cs | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs index a41f9f1..989eecd 100644 --- a/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs +++ b/Windows/CS/Framework4.0/Toprie/Toprie/Setting.cs @@ -4363,15 +4363,11 @@ namespace JoyD.Windows.CS if (pixelColor != Color.Transparent) { // 绘制温差层图像对应的像素 - // 修改:原代码每个采样点填充10x10区域导致图像显示不一致,改为只绘制实际采样的像素点 - using (Graphics g = Graphics.FromImage(_tempDiffOverlayImage)) + // 由于保存时保存了所有非透明像素,加载时只需要设置对应像素点的颜色即可 + if (_tempDiffOverlayImage is Bitmap bitmap) { - using (SolidBrush brush = new SolidBrush(pixelColor)) - { - // 只绘制单个点,而不是填充10x10区域,保持与原始绘制一致 - // 为了让点更清晰可见,使用2x2的小矩形 - g.FillRectangle(brush, x, y, 2, 2); - } + // 直接设置像素点颜色,这是最准确的方式 + bitmap.SetPixel(x, y, pixelColor); } } } @@ -4454,10 +4450,11 @@ namespace JoyD.Windows.CS // 将图像数据复制到数组 Marshal.Copy(bitmapData.Scan0, pixels, 0, byteCount); - // 遍历图像像素,每隔10个像素采样一次以减少文件大小 - for (int y = 0; y < bitmap.Height; y += 10) + // 修改:保存所有非透明像素,不再每隔10个像素采样 + // 这样可以确保加载时能准确还原原始绘制效果 + for (int y = 0; y < bitmap.Height; y++) { - for (int x = 0; x < bitmap.Width; x += 10) + for (int x = 0; x < bitmap.Width; x++) { // 计算当前像素在数组中的位置 int pixelIndex = y * bitmapData.Stride + x * bytesPerPixel;