欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C# Color.FromArgb()及系统颜色对照表一览

程序员文章站 2022-07-02 19:26:31
c#关于颜色值的表示:常用的颜色值表示方式有两种,一种是10进制的rgb值表示,如(0,113,255),三个值分别表示(红,绿,蓝);一种是16进制的颜色码表示,如#ff3212。这两种形式在编程中...

c#关于颜色值的表示:

常用的颜色值表示方式有两种,一种是10进制的rgb值表示,如(0,113,255),三个值分别表示(红,绿,蓝);一种是16进制的颜色码表示,如#ff3212。这两种形式在编程中都可以用到。若是在vs设计器中,设置某个控件的前景色或背景色时,可直接用0,113,255或#ff3212的形式,而在后台代码中,也可以通过color.fromargb()方法使用这两种形式来定义颜色。

color.fromargb()方法的重载及使用

color.fromargb()方法共有四种重载形式,msdn上列出来这四种重载方法的说明已足够解释各个参数的含义。

C# Color.FromArgb()及系统颜色对照表一览

其中alpha分量值即透明度设置要比较注意:

color.fromargb (int32, int32, int32)方法是没有设alpha值的,默认为255,即不透明。而在使用color.fromargb (int32)方法时,alpha值是默认为0的,例16进制颜色码#dd2378,使用color.fromargb (0xdd2378)来定义颜色,则alpha值是默认为0,该颜色是全透明的,所以看不到该颜色。要想显示出该颜色,必须设置alpha值>0,如:color.fromargb (0x7fdd2378);此时颜色为半透明。当然也可以将alpha值设置为全不透,其值为0xffdd2378。

不过在使用该值时有些注意事项,因为0xffdd2378是无符号整型uint类型,而color.fromargb (int32)的参数是int型,因此必须使用强制转化color.fromargb((int)0xffdd2378),不过即使这样,程序仍会报错,需要使用unchecked重写才能成功(unchecked 关键字用于取消整型算术运算和转换的溢出检查)。

我通过几句简单的代码来说明这个问题,代码如下:

 button1.backcolor = color.fromargb(0xdd2378);
 button2.backcolor = color.fromargb(0x7fdd2378);
 unchecked //在后续的作用域范围内,取消整型算术运算和转换的溢出检查
 {
 button3.backcolor = color.fromargb((int)0xffdd2378);
 }

如图所示,这是使用color.fromargb (int32)方法设置按钮背景色时使用三个不同值的效果。其差别一目了然。

C# Color.FromArgb()及系统颜色对照表一览

c#中的颜色对照表

使用方法:

color c1 = color.fromargb(32,178,170); //此方法设置的颜色,其透明度属性alpha=255,完全不透明。 
color c2 = color.fromknowncolor(knowncolor.lightseagreen);
color c3 = system.drawing.color.lime;

颜色对照表 参考下面:

补充:# 颜色表

以下的颜色代码取自html规范,这些颜色的名称对应于knowncolor的属性。比如,你可以用以下代码来创建一个color对象:

color c = color.fromknowncolor(knowncolor.colorname);

所有的colorname在后面的表格中一一列出,这些颜色对应的rgb值列在名字的后面,你可以使用fromargb方法来创建color对象。以下两行实际上创建了同一种颜色:

color c1 = color.fromargb(32,178,170);
color c2 = color.fromknowncolor(knowncolor.lightseagreen);

在下面这张表中,我严格依照颜色的rgb值设置对应颜色的显示。你所看到的真实效果依赖于浏览器是否准确处理了对应24位色的颜色显示(一些浏览器可能将某些颜色映射成“最接近的网页调色板颜色”),显示器的调节或者你显卡的校正值。因此显示效果会略有不同。

补充:

还有一些获取颜色的方式:

color c1 = color.aliceblue; //color类自带的静态颜色对象color c2 = color.fromargb(0x20b2aa);  //网页里面提取的颜色(原格式为#20b2aa)

c#颜色和名称对照表

a b c d e f g h i j k l m

n o p q r s t u v w x y z

C# Color.FromArgb()及系统颜色对照表一览

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。