修改温差图保存和加载逻辑以确保显示一致性:1. 保存时不再每隔10个像素采样,而是保存所有非透明像素 2. 加载时直接设置像素点颜色而不是填充区域,确保准确还原原始绘制效果
This commit is contained in:
@@ -4363,15 +4363,11 @@ namespace JoyD.Windows.CS
|
|||||||
if (pixelColor != Color.Transparent)
|
if (pixelColor != Color.Transparent)
|
||||||
{
|
{
|
||||||
// 绘制温差层图像对应的像素
|
// 绘制温差层图像对应的像素
|
||||||
// 修改:原代码每个采样点填充10x10区域导致图像显示不一致,改为只绘制实际采样的像素点
|
// 由于保存时保存了所有非透明像素,加载时只需要设置对应像素点的颜色即可
|
||||||
using (Graphics g = Graphics.FromImage(_tempDiffOverlayImage))
|
if (_tempDiffOverlayImage is Bitmap bitmap)
|
||||||
{
|
{
|
||||||
using (SolidBrush brush = new SolidBrush(pixelColor))
|
// 直接设置像素点颜色,这是最准确的方式
|
||||||
{
|
bitmap.SetPixel(x, y, pixelColor);
|
||||||
// 只绘制单个点,而不是填充10x10区域,保持与原始绘制一致
|
|
||||||
// 为了让点更清晰可见,使用2x2的小矩形
|
|
||||||
g.FillRectangle(brush, x, y, 2, 2);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4454,10 +4450,11 @@ namespace JoyD.Windows.CS
|
|||||||
// 将图像数据复制到数组
|
// 将图像数据复制到数组
|
||||||
Marshal.Copy(bitmapData.Scan0, pixels, 0, byteCount);
|
Marshal.Copy(bitmapData.Scan0, pixels, 0, byteCount);
|
||||||
|
|
||||||
// 遍历图像像素,每隔10个像素采样一次以减少文件大小
|
// 修改:保存所有非透明像素,不再每隔10个像素采样
|
||||||
for (int y = 0; y < bitmap.Height; y += 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;
|
int pixelIndex = y * bitmapData.Stride + x * bytesPerPixel;
|
||||||
|
|||||||
Reference in New Issue
Block a user