您好!看起来您可能想要开始一个关于C语言的讨论或者问题。不过,信息不完整,我无法直接给出具体的答案。如果您能提供更多细节或者具体的问题,我会很乐意帮助您解答。比如,您可能想要了解C语言的基础知识、编程技巧、某个特定函数的用法,或者是关于C语言编程的一些常见
摘要:缘由 看过上篇文章《OpenCvSharp基于颜色反差规避FBA面单贴标(2)》的都应该有印象这么一行代码:面单颜色列表(十六进制格式) privatestaticreadonly List<string&am
缘由
看过上篇文章《OpenCvSharp基于颜色反差规避FBA面单贴标(2)》的都应该有印象这么一行代码:
// 面单颜色列表(十六进制格式)
privatestaticreadonly List<string> LabelColors = new List<string>
{
"#7C7C7C", "#707070", "#5E5E5E", "#8F8F8D", "#5F5F5F", "#CBCBC9","#FFFFFF","#FEFEFE","#FCFCFC" ,"#7B7B7B","#828282","#7D7D7D","#787878","#D7D7D5","#777777","#7F7F7F"
};
每次有不同颜色或者无法定位的面单,都需要人工补录面单的背景色HEX,那么能不能集成一个工具,自动吸取图片色号保存后,这里能立即生效呢?答案是肯定的!先看看动态效果图:
点击取色,跟随鼠标实时显示背景色便于定位
快捷键Alt+C,抓取当前鼠标所在背景色存储到列表并存储到根目录colorHistory.json文件,便于其他地方读取
列表支持右键删除错误颜色(如下图)
其他地方读取抓取的颜色列表
保存的json文件格式如下:
[
"#018DBE",
"#B1C681",
"#03231E",
"#61CB81",
"#00424A",
"#B5BD68",
"#A3D9A3",
"#F68A1E",
"#0E83BA",
"#861B2D",
"#059BBC"
]
每次抓取都会往json存储当前最新色号,然后其他地方实时读取json即可:
//// 面单颜色列表(十六进制格式)
//private static readonly List<string> LabelColors = new List<string>
//{
// "#7C7C7C", "#707070", "#5E5E5E", "#8F8F8D", "#5F5F5F", "#CBCBC9","#FFFFFF","#FEFEFE","#FCFCFC" ,"#7B7B7B","#828282","#7D7D7D","#787878","#D7D7D5","#777777","#7F7F7F"
//};
static List<string> LabelColors = new List<string>();
privatestatic List<string> LoadColorList()
{
try
{
string historyFilePath = System.Windows.Forms.Application.StartupPath + @"\colorHistory.json";
if (File.Exists(historyFilePath))
{
string json = File.ReadAllText(historyFilePath);
var hexList = JsonSerializer.Deserialize<List<string>>(json);
foreach (var hex in hexList)
{
if (!string.IsNullOrEmpty(hex))
{
LabelColors.Add(hex);
}
}
return LabelColors;
}
}
catch (Exception ex)
{
MessageBox.Show($"加载历史记录失败: {ex.Message}", "错误",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
returnnull;
}
private List<Color> colorHistory = new List<Color>();
