我需要组合来自两个WriteableBitmap对象的两个颜色值,并用它们计算一些东西。因此,我在第一个对象上运行ForEach循环,并将其颜色值和第二个对象的颜色值解析为一个方法。
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服务中提取它们,我不知道这部分是否可以改编(至少不能改编自我)。
我现在的问题是,是否有其他方法或解决方法来解决这个问题?你有什么想法吗?
发布于 2012-08-16 14:11:02
这个解决方案可能只是一种变通办法,但在我给定的时间内,我想不出更好的办法。我只需预先循环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)]));https://stackoverflow.com/questions/11974359
复制相似问题