c# - 如何从 ARGB 中删除重复的字符
问题描述
我正在尝试获取十六进制形式的 rgb 颜色
public string GetCssValue(IWebElement iwe, string cssValue)
{
var value = iwe.GetCssValue(cssValue);
string[] numbers = value.Replace("rgba(", "").Replace(")", "").Split(",");
int a = int.Parse(numbers[0]);
int r = int.Parse(numbers[1]);
int g = int.Parse(numbers[2]);
int b = int.Parse(numbers[3]);
Color myColor = Color.FromArgb(a, r, g, b);
string hex = "#" + myColor.A.ToString("X2") + myColor.R.ToString("X2") +
myColor.G.ToString("X2") + myColor.B.ToString("X2");
这里的十六进制是获取值 #FFEEEE01 而我页面上的 css 是 #fee 以便我可以比较两个字符串(预期的,实际的)
我怎样才能将#fee 作为我的十六进制值。这个X2在这里代表什么
解决方案
更改代码以返回值的一种快速方法是仅连接值中的第一个字符RGB
:
string hex = "#" + myColor.R.ToString("X2")[0] + myColor.G.ToString("X2")[0] +
myColor.B.ToString("X2")[0];
但是,由于只有 6 位代码的子集可以准确地转换为 3 位代码(只有那些具有重复字符的代码),所以编写一个帮助方法来转换值可能会有所帮助:
public string GetThreeDigitRGB(Color color)
{
// Get the 2-character RGB color codes
var r = color.R.ToString("X2");
var g = color.G.ToString("X2");
var b = color.B.ToString("X2");
// Every color must have a repeating character for its code, otherwise we return null
return r[0] == r[1] && g[0] == g[1] && b[0] == b[1]
? $"#{r[0]}{g[0]}{b[0]}"
: null;
}
然后可以修改您的原始代码以Color
从输入创建一个对象并将其传递给我们上面的辅助方法以获取 3 位代码(另请注意我们以 RGBA 顺序获取颜色值的更改,这就是它们的方式重新传入):
public string GetCssValue(IWebElement iwe, string cssValue)
{
var value = iwe.GetCssValue(cssValue);
string[] numbers = value.Replace("rgba(", "").Replace(")", "").Split(",");
// Note the change to get the colors in the correct order
int r = int.Parse(numbers[0]);
int g = int.Parse(numbers[1]);
int b = int.Parse(numbers[2]);
int a = int.Parse(numbers[3]);
// Create a color from the values
Color myColor = Color.FromArgb(a, r, g, b);
// Call our helper method to get the three digit code from the color
return GetThreeDigitRGB(myColor);
}
推荐阅读
- intercom - 使用 Intercom 的 API 从分段请求用户时结果不一致
- ios - 文本字段和图像为零
- scala - 有条件地构建避免突变的列表
- format - 如何更改 WHMCS 价格小数分隔符?
- java - 在具有多个模块的配置中找不到 Java Bean
- openid - .AspNetCore.Correlation。未找到国家财产
- java - Spring MVC:无法连接到 Rest 服务
- sql-server-2008 - CTGIN2076E: 用于任务验证的异常运行数据库方法
- node.js - 查询期间要在服务器上执行的MongoDB密码
- menu - 菜单上方的引导社交媒体图标