本文告诉大家如何从字符串转颜色,从颜色转字符串
字符串转颜色
在 WPF 可以使用下面的代码把十六进制的颜色字符串转颜色
但是 UWP 没这个方法,所以需要自己写一个方法
如果有小伙伴传入一个不带透明的,那么上面的代码就会出现异常,因为不带透明的颜色只有 6 个字符,所以就无法使用上面的代码,我修改了下面代码可以转换颜色
大家可以从上面代码发现 ConvertHexToByte 这就是 16 进制转 int 的方法,请看C# 16 进制字符串转 int
但是存在这样写的颜色 #FD92
#DAC
的颜色,所以还需要继续修改一下算法
如果想看微软的转换,请看 https://referencesource.microsoft.com/#PresentationCore/Core/CSharp/System/Windows/Media/Parsers.cs
可以复制的源代码:
如果你没有在上面看到代码,请点击 <https://gist.github.com/lindexi/36c5e223ff77cfb8adc4909dec1576b5 >
另外,如果有引用 WindowsCommunityToolkit 库,那么还有更简单的方法,就是通过 Microsoft.Toolkit.Uwp.Helpers.ColorHelper.ToColor
方法,这个方法提供了高性能的,很少的字符串分配的方法解析颜色,但是要求传入的颜色必须添加 #
开头
如何引用 WindowsCommunityToolkit 库?请通过 NuGet 安装 Microsoft.Toolkit.Uwp
库
另一个版本是尝试转换,也就是输入的字符串不符合预期的时候不会炸
以上都有使用 Substring 方法从而需要分配内存,下面提供一个无多余内存分配的方法
颜色转字符串
如果需要从颜色转字符串是很简单
上面的代码就可以输出字符串
原文链接: http://blog.lindexi.com/post/win10-uwp-%E9%A2%9C%E8%89%B2%E8%BD%AC%E6%8D%A2
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
欢迎转载、使用、重新发布,但务必保留文章署名 林德熙 (包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我 联系。