一个获取渐变色颜色信息的实用工具程序

发布时间:2012-04-14 12:35:21   来源:文档文库   
字号:

一个获取渐变色颜色信息的实用工具程序

马致明

新疆师范大学物理系 830054

一、程序功能

在制作文字或图形界面时,常常希望获取介于两种颜色之间的渐变色的有关颜色信息。然而,因为没有现成的工具,许多编程者、图形设计者不得不亲自动手测试,操作起来非常麻烦。笔者经过反复琢磨和实践,用VB制作了一个获取渐变色颜色信息的实用工具程序。运行此程序,只要从颜色对话框中任选两种基色,就可看到由渐变色绘出的光谱带;此后只要将鼠标移向光谱带上的任意一点,屏幕上立即给出该点颜色的三元色分量值。本程序简单又实用,现将其介绍给广大编程爱好者。

二、编程思路

1. 从基色中获取三元色分量值

实现颜色渐变,要借助RGBred,green,blue)函数。为此,必须从基色中分离出红、绿、蓝三元色分量值。调色板及系统颜色用的是长整数表示法,其中低字节描述的是红色,次字节描述的是绿色,第三个字节描述的是蓝色,高字节未用;若颜色值为colour,则各色分量值依次为:

red=colour Mod 256

green=colour \ 256 Mod 256

blue=colour \ 256^2

2. 渐变色三元色分量值的计算方法

假定基色A和基色B的三元色分量值依次为ArAgAbBrBgBb,若想从A色经过k种颜色渐变到B色,则第i种渐变色的三元色分量值可采用以下计算方法:

red=Ar+(Br-Ar) * i / k

green=Ag+(Bg-Ag) * i / k

blue=Ab+(Bb-Ab) * i / k

其中,i的取值范围为:0123,……,k

3. 获取渐变色的颜色信息

当两种基色确定以后,按以上方法将渐变色的三元色信息保存在数组中,并用画矩形条的方法在图片框中画出渐变效果图。此后,只要把鼠标移到渐变效果图上,根据鼠标所在的矩形条的位置,就可从数组中得到该点的颜色信息。

三、程序介绍

1. 程序控件

本程序在窗体Form1上安置的控件有:图片框Picture1,用来呈现渐变效果图;通用对话框CommonDialog1,用来呈现颜色对话框;命令钮数组Command10)和Command11),标题依次取为“第一种颜色”和“第一种颜色”,用来选定两种基色;标签Label1,用来呈现颜色信息。为了美化界面并方便使用者,各控件的位置及相关属性均在程序代码中的Form_Load事件中设置。

2. 程序代码

Dim R(256) As Byte, G(256) As Byte, B(256) As Byte

Dim Cr(1) As Single, Cg(1) As Single, Cb(1) As Single

Private Sub Form_Load() '设定控件位置及相关属性

Form1.Top = 0 '窗体

Form1.Left = 0

Form1.Height = Screen.Height

Form1.Width = Screen.Width

Picture1.Top = 500 '图片框

Picture1.Left = Screen.Width * 0.3

Picture1.Width = 5200

Picture1.Height = 2500

Picture1.AutoRedraw = True

Picture1.BackColor = vbBlack

Command1(0).Left = Picture1.Left '命令钮数组

Command1(1).Left = Picture1.Left + Picture1.Width - Command1(1).Width

Command1(0).Top = Picture1.Height + Picture1.Top

Command1(1).Top = Picture1.Height + Picture1.Top

Label1.Top = 0 '标签

Label1.Left = Picture1.Left

Label1.ForeColor = vbRed

Label1.FontSize = 20

Label1.AutoSize = True

End Sub

Private Sub Command1_Click(Index As Integer)

Dim Colour As Long, i As Integer

CommonDialog1.ShowColor '呈现颜色对话框

Colour = CommonDialog1.Color '获取颜色

Cr(Index) = Colour Mod 256 '获取红色分量值

Cg(Index) = Colour \ 256 Mod 256 '获取绿色分量值

Cb(Index) = Colour \ 256 ^ 2 '获取蓝色分量值

For i = 0 To 256 '获取渐变色三元色分量值并绘矩形条

R(i) = Cr(0) + (Cr(1) - Cr(0)) * i / 256

G(i) = Cg(0) + (Cg(1) - Cg(0)) * i / 256

B(i) = Cb(0) + (Cb(1) - Cb(0)) * i / 256

Picture1.Line (i * 20, 0)-((i + 1) * 20, 2500), RGB(R(i), G(i), B(i)), BF

Next i

End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Dim N As Integer

N = X \ 20

Label1.Caption = "红色=" + CStr(R(N)) + " 绿色=" + CStr(G(N)) + " 蓝色=" + CStr(B(N))

End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Label1.Caption = ""

End Sub

附作者简介:

马致明、男、回族、6310月生、硕士,新疆师范大学物理系微机教研室副教授,主要从事计算机及计算机辅助教学方面的教学和研究。参加过2CAI方面的课题,并在《电脑爱好者》、《中国电脑教育报》、《多媒体世界》、《电脑知识与技术》、《实验教学与仪器》、《新疆师范大学学报》等九种刊物上发表了十七篇文章;文章主要涉及计算机编程方面的经验和技巧。联系方法:

通讯地址:新疆师范大学物理系 830054

话:0991-*******-2582

本文来源:https://www.2haoxitong.net/k/doc/1cb0571452d380eb62946de5.html

《一个获取渐变色颜色信息的实用工具程序.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式