Color.FromArgb()方法详解

写在前面的话

前几天做项目的时候需要在后台定义颜色,用到了Color.FromArgb(),着实让我折腾了很久。没办法,对于一个习惯在设计器中设置颜色,或仅使用Color.Red这种通用颜色的菜鸟来讲,实在是不太了解Color.FromArgb()的使用。原来顶多也就用到例如(255,255,255)的RGB颜色值来设置。然而颜色值的表现形式多种多样,例如#7fed23这种16进制的颜色值表示也很常见,而如何直接根据这种表示值来定义颜色呢?现分享给大家。

关于颜色值的表示

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

Color.FromArgb()方法的重载及使用

Color.FromArgb()方法共有四种重载形式,MSDN上列出来这四种重载方法的说明已足够解释各个参数的含义。
这里写图片描述
其中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)方法设置按钮背景色时使用三个不同值的效果。其差别一目了然吧?
这里写图片描述

后记

或许是太久未写东西,感觉自己语言的组织能力明显下降,这篇博文几度写不下去。不过还是希望我有说清楚自己想要表达的意思,大家能理解就行。以后还要多多总结,多多记录,继续努力。共勉!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值