vb.net 教程 5-4 颜色

前端之家收集整理的这篇文章主要介绍了vb.net 教程 5-4 颜色前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
基本知识:
通常情况下,我们所见的颜色都可以用红色、绿色、蓝色三种颜色按照不同比例混合而成,因此红绿蓝又称为三原色(对应英文R(red)、G(green)、B(blue))。目前RGB色彩、模式是工业界的颜色标准之一(还有CMYK等)。


每种颜色都有0-255级亮度,其中 0 表示没有亮度,255 表示最大亮度。
这样计算下来,RGB色彩总共能组合出约1678万种颜色,即256×256×256=16777216=2^24,也就是所说的24位色;
计算机中又增加了透明度(Alpha)的概念,0 表示完全透明,255 表示完全不透明。
这样计算下来,ARGB色彩总共能组合出约万种颜色,即256×256×256×256=4294967296=2^32,也就是所说的32位色;

vb.net中,获得一种颜色可以使用以下方法
Dim myColor as Color=Color.FromArgb(Int32,Int32,Int32)
这是常见的从指定的 8 位颜色值(红色、绿色和蓝色)创建 Color 结构,此方法中Alpha值默认为 255(完全不透明)。
也可以直接使用如Color.Red(ARGB=FFFF0000)等已经定义的静态成员。

获得颜色的其他几种方法请参看MSDN

代码示例:制作一个调色盘
使用到了4个pictureBox控件(以pic开头命名),3个hscrollbar控件(以hsb开头命名),3个label控件(以lbl开头命名),如下图:
为了形象说明RGB颜色,红色、绿色、蓝色,每种颜色对应一个滚动条,滚动条的最小值为0,最大值为255,
窗体载入的时候,会在三个小图片框内显示红绿蓝三种颜色,当我们拖动任一滚动条时,picPalette的背景色跟随改变。
代码如下:
载入窗体时:
    Private Sub Form2_Load(sender As Object,e As EventArgs) Handles MyBase.Load
        colorPalette = Color.FromArgb(0,0)

        picRed.BackColor = Color.Red
        picGreen.BackColor = Color.Green
        picBlue.BackColor = Color.Blue

        picPalette.BackColor = colorPalette

    End Sub
红色值变动时:
    Private Sub hsbRed_Scroll(sender As Object,e As ScrollEventArgs) Handles hsbRed.Scroll
        lblRed.Text = hsbRed.Value
        colorPalette = Color.FromArgb(hsbRed.Value,hsbGreen.Value,hsbBlue.Value)
        picPalette.BackColor = colorPalette

    End Sub
绿色值变动时:
    Private Sub hsbGreen_Scroll(sender As Object,e As ScrollEventArgs) Handles hsbGreen.Scroll
        lblGreen.Text = hsbGreen.Value
        colorPalette = Color.FromArgb(hsbRed.Value,hsbBlue.Value)
        picPalette.BackColor = colorPalette

    End Sub
蓝色值变动时:
    Private Sub hsbBlue_Scroll(sender As Object,e As ScrollEventArgs) Handles hsbBlue.Scroll
        lblBlue.Text = hsbBlue.Value
        colorPalette = Color.FromArgb(hsbRed.Value,hsbBlue.Value)
        picPalette.BackColor = colorPalette

    End Sub
运行时截图:
红色+绿色=黄色

红色+蓝色=紫红色
其他更多的颜色还是留给读者自己测试吧。

更进一步的改进:网页制作中,我们也需要掌握颜色的运用,html中颜色的表示类似”#FF0000“(红色),那么我们通过这个程序获得的颜色如何转为网页中使用的颜色格式呢?
代码如下:
    Private Sub toWebColor()
        Dim hexRed As String = Format(hsbRed.Value,"X")
        If hexRed.Length = 1 Then hexRed = "0" & hexRed

        Dim hexGreen As String = Format(hsbGreen.Value,"X")
        If hexGreen.Length = 1 Then hexGreen = "0" & hexGreen

        Dim hexBlue As String = Format(hsbBlue.Value,"X")
        If hexBlue.Length = 1 Then hexBlue = "0" & hexBlue

        txtHex.Text = "#" & hexRed & hexGreen & hexBlue

    End Sub

这就是将我们的颜色从十进制转为十六进制,按照RGB的顺序排列并在前面加上个”#“,
其中十进制转16进制使用了 Format,”X“表示 将数字显示为包含十六进制(以 16 为底)格式的数值的字符串。
我们看一下运行效果
这下可以将颜色复制到网页的代码里面使用了。


由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供的参考。

学习更多vb.net知识,请参看 vb.net 教程 目录

猜你在找的VB相关文章