LazowskiAnton · Extensions

ColorSmith

为 Visual Studio 编辑器提供颜色样本和真正好用的取色器。样本只出现在代码真正定义颜色的地方——绝不会出现在页面文本中的单词“red”上,也不会出现在注释里的 #123 上。

免费 · Visual Studio 2022 和 2026 · 14 种界面语言 · 无遥测

为什么还要一个颜色扩展

智能检测

每种语言都有自己的词法分析器,能区分字符串、注释和代码。颜色名称只有在颜色上下文中(Foreground="Red"、color: red)才会显示样本,普通文本中不会。

值得打开的取色器

HEX、RGB、HSL 和 OKLCH,带放大镜的吸管,浅色与深色,文件中的颜色,收藏,WCAG 对比度。结果会以代码已在使用的写法写回。

免费,没有附加条件

没有订阅、没有试用期、没有催促弹窗、没有遥测。设置只保存在你的计算机上。

说你的语言

英语、捷克语、德语、西班牙语、法语、意大利语、日语、韩语、波兰语、葡萄牙语(巴西)、俄语、土耳其语、中文(简体和繁体)。跟随 Visual Studio 的语言。

功能

语言

语言哪些内容会显示样本
C#, Visual Basic, F#十六进制字符串,Colors.X / Brushes.X / Color.X,带字面量的 Color.FromArgb / FromRgb,Unity Color / Color32,SkiaSharp,MAUI
C / C++十六进制字符串,RGB(),D2D1::ColorF,QColor,IM_COL32
JavaScript / TypeScript十六进制和 CSS 字符串,赋值给颜色目标的名称(fillStyle = 'red'),new THREE.Color(),JSX 中的 Tailwind 类
Python十六进制字符串,matplotlib "tab:blue",QColor(…),仅作为颜色参数的名称(color="red"、Tkinter bg=)
XAML / AXAML颜色属性、setter、<Color> 资源、渐变画笔、资源引用、MAUI AppThemeBinding
CSS / SCSS / LESS仅声明值、变量、light-dark()、color-mix()、渐变、var()
HTML / Vue / SVG / Razorstyle 属性、颜色属性、<style> 和 <script> 块、Razor C# 块、Tailwind 类

取色器

单击样本,或单击颜色卡片中的编辑。取色器会在值旁边打开,并显示将写回的写法(示例中为 Color.FromArgb())。

  • 饱和度/明度区域,色相和不透明度滑条。
  • 支持以 HEX、RGB、HSL 和 OKLCH 输入;下方一行准确显示将写入代码的内容。
  • 吸管可从屏幕任意位置拾取颜色。放大镜显示光标下的像素;方向键每次移动 1 像素,Shift+方向键每次移动 10 像素。
  • 复制为:适用于 XAML/.NET 或 CSS 的 HEX、rgb()、hsl()、oklch()、Color.FromArgb、Unity Color 或 0xAARRGGBB。
  • 当前颜色的浅色与深色、此文件中的颜色、收藏(星形按钮)和最近使用的颜色。
  • 对比度 (WCAG):该颜色作为文本在编辑器背景、白色或黑色上的对比度,并标注 AA / AAA / 大字。
  • 最接近的命名颜色(≈ DodgerBlue);单击即可使用该名称。
  • Enter 应用,Esc 取消;单击取色器外部也会应用。各部分可以折叠,取色器会记住折叠状态。? 按钮会打开本页。

复合颜色和资源颜色在取色器中为只读:请编辑其中的颜色,或在资源定义处编辑资源。

深色主题下的 ColorSmith 取色器
取色器跟随 Visual Studio 主题。

颜色卡片

将鼠标悬停在颜色上即可查看其卡片。在下划线和背景模式中,卡片上还有按钮:编辑打开取色器,复制复制值,在解决方案中替换颜色…启动整个解决方案范围的替换。按住 Alt 单击样本可直接复制值,不打开任何窗口。

检测原理

ColorSmith 不会用一个庞大的正则表达式搜索文本。每个文件都由对应语言的词法分析器拆分为字符串、注释和代码,只有当位置毫无疑问时,值才会被识别为颜色。有疑问时,不显示样本。

显示样本不显示样本
Foreground="Red", color: red;<p>Red is my favorite color</p>
"#3D8BFF", // #3D8BFF// fixed in #123(注释中的短十六进制值)
Color.FromArgb(255, 61, 139, 255)Color.FromArgb(alpha, r, g, b)(值未知)
bg-sky-500, text-white/80text-lg, border-2, bg-cover
Python 中的 color="red"status = "red", (255, 0, 0)
a { color: navy }#main、.red 选择器,font-family: Red Hat

8 位十六进制

#XXXXXXXX 在 .NET、XAML 和 Qt 中表示 Alpha 在前(#AARRGGBB),在 CSS 和 JavaScript 中表示 Alpha 在后(#RRGGBBAA)。由于 Unity 和面向 Web 的代码将 Alpha 放在最后,C#、VB 和 C++ 字符串中的顺序由设置决定。

在解决方案中替换

在颜色上使用灯泡(Ctrl+.)或颜色卡片中的按钮打开。它会在整个解决方案文件夹(不含 bin、obj 和 node_modules)中查找该颜色的所有写法,让你选择要替换的位置,并按各自的写法重写。更改的文件以未保存状态打开,每个文件只需一步撤消,因此可以在保存前检查全部更改。

设置

工具 → 选项 → SmithWorks → ColorSmith。每个选项下方都有说明。

选项默认值
显示颜色样本开
显示模式下划线
样本大小中
IntelliSense 中的颜色预览开
在解决方案中替换开
注释中的十六进制颜色开
Tailwind CSS 类开
资源颜色开
C#、VB 和 C++ 中的 8 位十六进制#AARRGGBB
最大文件大小 (KB)4096
语言全部开启

设置与取色器的收藏和最近使用的颜色一起保存在 %LocalAppData%\ColorSmith 中。

ColorSmith 选项页
选项页。底部的文档链接会打开本页。

常见问题

为什么我的颜色没有样本?

很可能是位置有歧义:颜色上下文之外的名称、带变量参数的调用、注释中的短十六进制值,或用 var()/calc() 构建的值。另请检查设置中是否已开启该语言,以及文件是否小于大小限制。

颜色能以图标形式显示在 IntelliSense 列表中吗?

不能。Visual Studio 不允许扩展更改其他提供程序的完成项图标。ColorSmith 改为在光标上方显示颜色小标签。

样本会让代码移位吗?

只有“值前的方块”模式会。边距、下划线和背景模式从不移动文本。

能在使用资源颜色的位置直接编辑它吗?

暂时不能。卡片会显示每个主题的值及其文件和行号;请在定义处修改。

ColorSmith 会发送任何数据吗?

不会。没有遥测,也不访问网络。

在哪里报告问题或提出功能建议?

请在 GitHub 上的 Feedback 仓库中提交 issue——那里有用于报告错误和提出建议的表单。也可以使用 Marketplace 上的 Q&A 选项卡。

更新日志

1.0.2

1.0.1

1.0.0