我最近一直在开发一些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秒。有什么我做错了,还有什么可以改进。
感谢。
答案 0 :(得分:0)
您阅读图像查找像素并更改颜色的算法是一个耗时的过程。你有两种方法可以更快地完成它
1)使用Segoe MDL2 Assets
您可以使用包含大多数基本图像的这些预安装字体系列。好处是因为这些是矢量图像改变前景会立即改变颜色。在系统中搜索CharacterMap,然后搜索此字体,您将找到所有可用的字体
2)如果你无法在charmap中找到你的特定图像,那么你将不得不使用混合创建路径图像,类似于将图像转换为矢量,然后你可以轻松地改变颜色。