【问题标题】:WinRT replace colour in BitmapImage with anotherWinRT 用另一种颜色替换 BitmapImage 中的颜色
【发布时间】:2013-06-09 22:03:46
【问题描述】:

我一直在寻找执行以下操作:

  • Bitmap 中的Colour 替换为不同的 Colour

经过一番阅读,我认为这可能使用WriteableBitmap

我对@9​​87654325@ 处理一无所知,所以我不确定如何使用这个类来实现我的要求。

以下内容将不胜感激:

有用文章的链接,这会让我有足够的理解 开发我自己的解决方案。

【问题讨论】:

  • 至少表现出一点点努力。
  • 比如你想把所有的红色像素(RGB = 255, 0, 0)都换成蓝色像素,是吗?
  • 我实际上想将特定颜色视为透明。那可能吗?如果不是,我想将十六进制颜色从 #0A59C2 更改为 #F4EED6。
  • 这与异步有什么关系?
  • 在发布此问题时,我认为该解决方案将利用一些异步功能。说实话,唯一一次使用异步是当我为 UI 绑定分配编辑的位图时,使用 SetSourceAsync 方法以及 WriteAsync 来写入更改的位图像素数据。我随后从这篇文章中删除了 winrt-async 标签。

标签: c# windows-runtime microsoft-metro .net-4.5


【解决方案1】:

使用WriteableBitmapEx 库。获取将所有像素保存为 Int32 的图片的 Pixels 数组。使用

获取每个像素的RGB值
var c = inputPixels[i];
var a = (byte)(c >> 24);
var r = (byte)(c >> 16);
var g = (byte)(c >> 8);
var b = (byte)(c);

检查这是否是您想要的颜色。如果是,则使用新的 argb 字节值将该颜色更改为另一种颜色

resultPixels[i] = (a << 24) | 
                  (r << 16) | 
                  (g << 8) | 
                  b;

在此处的精彩教程中阅读有关图像处理的更多信息

PicFx – Windows Phone Picture Effects Application – Part 1

PicFx – Windows Phone Picture Effects Application – Part 2

【讨论】:

    猜你喜欢
    • 2014-05-07
    • 2015-02-12
    • 2017-10-05
    • 1970-01-01
    • 2015-12-19
    • 2012-08-24
    • 2019-07-06
    • 2016-06-17
    • 1970-01-01
    相关资源
    最近更新 更多