WP8.1 RT - 更改像素颜色

时间:2016-05-30 08:38:27

标签: c# colors windows-phone-8.1 runtime pixels

我最近一直在开发一些Windows Phone 8.1 RT应用程序,这需要很多图标。对于iOS和Android,我们可以使用White on Black图标并通过代码将它们转换为正确的颜色。但是对于WP8.1来说,快速运行似乎是不可能的。

class ColoredImage
{
    public static WriteableBitmap GetColoredImage(WriteableBitmap bitmap,  Color color)
    {
        var result = bitmap;

        for (int i = 0; i < (result.PixelWidth); i++)
        {
            for (int j = 0;  j < result.PixelHeight; j++)
            {
                if (result.GetPixel(i, j) == Colors.Black)
                {
                    result.SetPixel(i, j, Colors.Transparent);
                }
                else
                {
                    result.SetPixel(i, j, color);
                }
            }
        }
        return result;
    }
}

我让这个类改变了WriteableBitmap的颜色,但更改62x62图像的颜色大约需要15秒。有什么我做错了,还有什么可以改进。

感谢。

1 个答案:

答案 0 :(得分:0)

您阅读图像查找像素并更改颜色的算法是一个耗时的过程。你有两种方法可以更快地完成它 1)使用Segoe MDL2 Assets您可以使用包含大多数基本图像的这些预安装字体系列。好处是因为这些是矢量图像改变前景会立即改变颜色。在系统中搜索CharacterMap,然后搜索此字体,您将找到所有可用的字体
2)如果你无法在charmap中找到你的特定图像,那么你将不得不使用混合创建路径图像,类似于将图像转换为矢量,然后你可以轻松地改变颜色。