首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WriteableBitmapEx GetPixel()返回错误的值

WriteableBitmapEx GetPixel()返回错误的值
EN

Stack Overflow用户
提问于 2012-08-16 01:46:25
回答 1查看 786关注 0票数 3

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

代码语言:javascript
复制
writeableBitmap.ForEach((x, y, color) => 
    MergePixelColor(color, mergedWriteableBitmap.GetPixel(x, y)));

第一个值是我直接从委托获得的,但是为了访问第二个颜色值,我使用了来自WriteableBitmap扩展的GetPixel方法。

这实际上应该是这样工作的,但是GetPixel方法似乎返回了错误的数据(颜色不知何故错误地显示为“黄色”或“红色”)。

我查了查,找到了下面的文章:

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

这里提到了图像格式可能有问题。我的问题是,我不能直接访问图像生成点。我从not服务中提取它们,我不知道这部分是否可以改编(至少不能改编自我)。

我现在的问题是,是否有其他方法或解决方法来解决这个问题?你有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-16 14:11:02

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

代码语言:javascript
复制
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;
});

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

代码语言:javascript
复制
writeableBitmap.ForEach((x, y, color) => 
    MergePixelColor(color, mergedWriteableBitmapMapping[GetIndex(x, y, mergedWriteableBitmap.PixelWidth)]));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11974359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档