白羽
2018-07-10
来源 :网络
阅读 3189
评论 0
摘要:本文将带你了解C#编程之代码:获取与指定颜色相似的.NET自带颜色,希望本文对大家学C#/.Net有所帮助。
写了段C#代码,用于解决以下问题:
给定一个颜色,要找到有哪些.NET中自带的颜色与之相似,这里说的.NET自带的颜色,指类似Color.Blue、Color.Black这样的存在于Color结构中的Color类型公开静态属性。比如我要查询的颜色RGB值分别为135、112、155,那么在RGB值各上下浮动30点的范围内,应获得Color.Gray(128,128,128)、Color.LightSlateGray(119,136,153)、Color.SlateGray(112,128,144)三类相似的颜色。
建立一个C#命令行应用程序,手动添加引用System.Drawing用于支持Color类,然后输入如下代码:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Drawing; //需要手动添加引用System.Drawing
namespace ColorSearcher
{
class Program
{
static void Main(string[] args)
{
int interval = 30; //RGB差异均小于此值的颜色将被判断为相似颜色
Color colorToSearch = default(Color); //用于存储用户录入的颜色
bool isInputLegal = false; //用于校验用户录入结果是否合法
if (args.Length == 1) //用法1:ColorSearcher HTML颜色代码(如#ABABAB)
{
try
{
colorToSearch = ColorTranslator.FromHtml(args[0]);
isInputLegal = true;
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
else if (args.Length >= 3) //用法2:ColorSearcher R G B(如 171 171 171)
{
try
{
int r = int.Parse(args[0]);
int g = int.Parse(args[1]);
int b = int.Parse(args[2]);
colorToSearch = Color.FromArgb(r, g, b);
isInputLegal = true;
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
return;
}
}
//非法输入,显示帮助
if (!isInputLegal)
{
Console.WriteLine("用法1:ColorSearcher HTML颜色代码(如#ABABAB)");
Console.WriteLine("用法2:ColorSearcher R G B(如 171 171 171)");
return;
}
Console.WriteLine("指定颜色");
Console.WriteLine(colorToSearch);
//链表:用于存储从Color类中反射出的所有颜色
LinkedList<Color> colors = new LinkedList<Color>();
Type t = typeof(System.Drawing.Color);
System.Reflection.PropertyInfo[] properties = t.GetProperties();
foreach (System.Reflection.PropertyInfo property in properties)
{
if (property.PropertyType.ToString() == "System.Drawing.Color")
{
colors.AddLast((Color)property.GetValue(t, null));
}
}
//查找相似颜色
Console.WriteLine("相似颜色");
bool hasFinded = false;
foreach (Color color in colors)
{
if (Math.Abs(colorToSearch.R - color.R) < interval &&
Math.Abs(colorToSearch.G - color.G) < interval &&
Math.Abs(colorToSearch.B - color.B) < interval)
{
Console.WriteLine(color + String.Format("[{0}, {1}, {2}]", color.R, color.G, color.B));
hasFinded = true;
}
}
if (!hasFinded)
{
Console.WriteLine("未找到");
}
}
}
}
这段代码有两种用法:
1、用法1:ColorSearcher HTML颜色代码(如#ABABAB)
2、用法2:ColorSearcher R G B(如 171 171 171)
运行效果如下:

以上就介绍了C#.NET的相关知识,希望对C#.NET有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言C#.NET频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号