重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
首先纠正一下,HFFFFFFFF不是白色,正确的应该是HFFFFFF,共三个字节,每个字节分别是红绿蓝三原色的分量值。如果用HFFFFFFFF(这是四个字节),VB6会报错的。
创新互联专注于企业营销型网站建设、网站重做改版、灌云网站定制设计、自适应品牌网站建设、H5页面制作、商城系统网站开发、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为灌云等各大城市提供网站开发制作服务。
其次,vbWhite是VB的内部常量,它的值就是HFFFFFF(也就是十进制的16777215),所以不存在转换的问题。建议尽量使用类似vbWhite、vbRed、vbBlue这样的常量来表示颜色,因为它们很直观,即使不懂编程(但懂点英语)的人也知道它们就是白色、红色、蓝色的意思。
你可以自己在VB6的立即窗口验证一下我上面所述是否正确:
Print vbWhite '显示结果为16777215
Print Hex(vbWhite) '显示结果为FFFFFF
补充说一下,颜色的多种表示方式,其实它们最终的值都是相等的,并不需要所谓的转换,比如以下是纯蓝色的多种表示方式:
vbBlue
RGB(0, 0, 255)
HFF0000
16711680
以上这些表示方式,其实它们的值都是一样的,都是等于16711680,你甚至可以拿它们直接来进行数学运算呢!
vbBlue + RGB(0, 0, 255) + HFF0000 + 16711680 = 66846720
66846720 / 4 = 16711680
如果你是想让一个颜色值分解为红绿蓝三原色分量,可以这样:
color1 = vbWhite '这是白色
red = color1 Mod H100 '这是红色分量
green = color1 \ H100 Mod H100 '这是绿色分量
blue = color1 \ H10000 '这是蓝色分量
public Color col(string colorName)
{
Type colorType = typeof(Color);
PropertyInfo info = colorType.GetProperty(colorName, BindingFlags.Public | BindingFlags.Static);
if (infos == null)
{
//throw Exception
}
return(Color)info.GetValue(null, null);
}
是这个意思么?输入“Red”, 返回Color.Red 区分大小写
R/G/B值最小是0最大是255属Byte值类型
Dim cr As Color = 控件.BackColor '获取控件背景色
Dim alpha As Byte = cr.A '透明度
Dim R As Byte = cr.R 'R值
Dim G As Byte = cr.G 'G值
Dim B As Byte = cr.B 'B值
Dim outAcr As Color = Color.FromArgb(alpha, R, G, B) '创建带有透明通道的ARGB颜色
Dim outcr As Color = Color.FromArgb(R, G, B) '创建不透明的RGB颜色
Label控件是没有办法实现多种颜色的文字的,只能用RichTextBox来实现,而且你的自定义格式字符串也没有结尾的,这样很不好,至少也要red红色字/redyellow黄色字/yellow,而且实现也很麻烦的,下面的代码我没有检测正确性,有错误的自己改一改吧
Dim colortag() as string
dim colors() as color
const txt as string="red红色字/redyellow黄色字/yellow"
private sub Form_Load(object sender,eventargs e)handles mybase.load
colortag(0)="red":Colortag(1)="yellow"
colors(0)=color.red:colors(1)=color.yellow
richtextbox1.text=txt
for i as integer=0 to colortag.lenght-1
dim tag as string="" colortag(i) ""
dim endtag as string="/" colortag(i) ""
dim find as integer=1
do
find=instr(find,txt,tag)+tag.lenght
if(find0)then
dim find1 as integer=instr(find,txt,endtag)
richtextbox1.SelectionStart=find
richtextbox1.selectionlenght=find1-find
richtextbox1.selectioncolor=colors(i)
find=find1
else
exit do
end if
loop
next
end sub