首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.vssettings文件(Visual Studio设置)颜色格式

.vssettings文件(Visual Studio设置)颜色格式
EN

Stack Overflow用户
提问于 2011-11-04 12:37:13
回答 3查看 2.8K关注 0票数 10

我正在为基于Visual Studio主题的Sublime文本创建自己的配色方案。

Visual Studio主题定义了前景和背景,但它们不在标准的RGB三元组中。我不知道这个数字是什么意思,我想知道如何将它转换为RGB三元组(即#FFFFFF),以便在Sublime Text中使用。

示例:

代码语言:javascript
复制
<Item Name="Comment" Foreground="0x007B7466" Background="0x02000000" BoldFont="No"/>
<Item Name="Plain Text" Foreground="0x00F3F2F1" Background="0x002A2822" BoldFont="No"/>
<Item Name="Selected Text" Foreground="0x00FFFFFF" Background="0x0064614F" BoldFont="No"/>

我试过在here和google上搜索,但显然我找不到正确的搜索词来找到正确的答案。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-04 13:47:05

乍一看(对MS喜欢如何处理颜色有一定的了解),这些似乎是十六进制形式的ARGB或XRGB DWORD。但是,根据您所做的工作,它们可能是A/XBGR。

最有可能的是,前两个字符是alpha,然后是红色、绿色和蓝色。这是一种非常标准的布局颜色的方法,因为它非常适合内存寄存器,并匹配一些格式的纹理数据。

然而,有些地方喜欢反转,这与其他纹理格式相匹配。A/X保持在开始位置,然后是蓝色、绿色和红色。

通过提供0x00FF0000,这应该很容易测试。如果为蓝色,则为BGR;如果为红色,则为RGB。

他们可能正在使用第一个通道/字节,而不是alpha。将数据打包到3通道纹理的alpha通道中并不少见。然而,只有一种颜色是0x02...,其余的都是0x00...,所以我不会这么做(还有一个3.5字节的颜色,所以可能是打字错误)。

你不需要对它们做任何转换,因为它们已经是十六进制的(实际的代码十六进制,而不是#... web的东西)。要“转换”web十六进制三元组,只需删除#和前缀0x00即可。所有其他字符保持不变(大小写不重要,尽管有些人喜欢大写作为程序)。

票数 5
EN

Stack Overflow用户

发布于 2011-12-30 05:34:14

就像FYI一样,vsettings文件使用BGR而不是RGB

票数 18
EN

Stack Overflow用户

发布于 2019-03-05 23:36:35

如果有人需要解析VSSettings颜色,您可以使用以下代码(使用新的Span API):

代码语言:javascript
复制
// input is like "0x008CFAF1", ABGR
var color = abgr.AsSpan();
byte blue = byte.Parse(color.Slice(4, 2), NumberStyles.AllowHexSpecifier);
byte green = byte.Parse(color.Slice(6, 2), NumberStyles.AllowHexSpecifier);
byte red = byte.Parse(color.Slice(8, 2), NumberStyles.AllowHexSpecifier);
return Color.FromRgb(red, green, blue);

如果您没有访问AsSpan()的权限,可以将Slice操作更改为Substring

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8004915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档