gpt4 book ai didi

c# - WriteableBitmapEx GetPixel() 返回错误值

转载 作者:行者123 更新时间:2023-11-30 18:37:59 31 4
gpt4 key购买 nike

我需要组合来自两个 WriteableBitmap 对象的两个颜色值并用它们计算一些东西。因此,我在第一个对象上运行 ForEach 循环,并将其颜色值和第二个对象的颜色值解析为一个方法。

writeableBitmap.ForEach((x, y, color) => 
MergePixelColor(color, mergedWriteableBitmap.GetPixel(x, y)));

我直接从委托(delegate)中获取第一个值,但要访问第二个颜色值,我使用 WriteableBitmap 扩展中的 GetPixel 方法。

这实际上应该像那样工作,但 GetPixel 方法似乎返回了错误的数据(颜色以某种方式错误地“偏黄”或“偏红”)。

我查找并找到了以下文章:

http://forums.silverlight.net/t/250392.aspx/1?WriteableBitmap+GetPixel+

那里提到图像格式可能有问题。我的问题是我无法直接访问生成图像的位置。我从网络服务中提取它们,但我不知道该部分是否可以改编(至少不是我)。

我现在的问题是,是否有任何其他方法或解决方法可以解决此问题?你有什么想法吗?

最佳答案

此解决方案可能只是一种变通方法,但在我给定的时间内我想不出更好的方法。我只是预先循环 mergedWriteableBitmap 并将其颜色值保存到字典中:

IDictionary<int, Color> mergedWriteableBitmapMapping = new Dictionary<int, Color>();
mergedWriteableBitmap.ForEach((x, y, color) =>
{
int index = GetIndex(x, y, mergedWriteableBitmap.PixelWidth);
mergedWriteableBitmapMapping.Add(index, color);
return color;
});

然后我使用这个字典值将正确的颜色值解析到方法中:

writeableBitmap.ForEach((x, y, color) => 
MergePixelColor(color, mergedWriteableBitmapMapping[GetIndex(x, y, mergedWriteableBitmap.PixelWidth)]));

关于c# - WriteableBitmapEx GetPixel() 返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11974359/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com