gpt4 book ai didi

c++ - Winrt/XAML/C++ : Get Color from String Value

转载 作者:行者123 更新时间:2023-11-28 07:58:14 24 4
gpt4 key购买 nike

我目前正在用 C++ 编写一些 WinRT 组件,我需要弄清楚如何获取 Color 字符串(例如“#FF448DCA”)并将其转换为 Color 用于构建 SolidColorBrush

WPF 中,我们有 BrushConverter,但我们在 WinRT 中似乎没有等效项

我可以在 C# 中通过拆分字符串、转换为十六进制 block 等来完成此操作,但这超出了我目前的 C++ 技能。

在我花大量时间尝试解决之前,有人能快速回答(我的 C++ 会改进,但我的 deadlines 会受到影响)

谢谢

最佳答案

这是一个简短的示例,说明如何使用正则表达式完成此操作,使用 vs 2010 express 编写。这只是解析,稍后使用 Marc 编写的 ColorHelper

#include <string>
#include <regex>

bool GetARGBFromS(const std::string& s, int& a, int& r, int& g, int& b) {
try {
std::smatch m;
if ( regex_search(s, m, std::regex("#([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})")) ) {
a = std::stoi(m[1].str(), 0, 16);
r = std::stoi(m[2].str(), 0, 16);
g = std::stoi(m[3].str(), 0, 16);
b = std::stoi(m[4].str(), 0, 16);
}
else
return false;
}
catch(...){ /*should catch/report specific exceptions, but thats just example*/ return false; }
return true;
}

int main() {

int a,r,g,b;
if ( GetARGBFromS("#FF448DCA", a, r, g, b) )
{}

return 0;
}

关于c++ - Winrt/XAML/C++ : Get Color from String Value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12172963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com