怎样做RGB调色板

怎样做RGB调色板,第1张

红、绿、蓝为光中的三原色,通过对这三种原色的不同比例搭配产生各种颜色。Visual Basic中的RGB函数是和哪陆以上的原理相同。函数的形式如下:RGB(r,g,b)。其中r,g,b分别表示红、绿、蓝,它们的取值范围为0~255。在编程时通过调节r,g,b的值就能得到各种颜色。

但在具体编程时,取得某种颜色,r,g,b各取什么值,凭空是难以确定的。于是笔者用VB编了一个“RGB调色板”程序,较好地解决了这个问题。此程序李搭顷可作为编程时,取颜色的小工具。

本程序采用了三个水平滚动条控件,分别用于调节r,g,b的值,它们的Max属性设为255;三个标签控件分别用于返回r,g,b的值;一个图片框用于返回相应的颜色。具体的程序如下:

当运行程序后屏幕上出现如图画面。调节三个水平滚动条就返回r,g,b的值和相应的颜枝败色。

Rem RGB调色板程序

Private Sub HScroll1_Change()

Picture1_Click

Label1_Click

End Sub

Private Sub HScroll2_Change()

Picture1_Click

Label2_Click

End Sub

Private Sub HScroll3_Change()

Picture1_Click

Label3_Click

End Sub

Private Sub Label1_Click()

Label1.Caption = HScroll1.Value

End Sub

Private Sub Label2_Click()

Label2.Caption = HScroll2.Value

End Sub

Private Sub Label3_Click()

Label3.Caption = HScroll3.Value

End Sub

Private Sub Picture1_Click()

r = HScroll1.Value

g = HScroll2.Value

b = HScroll3.Value

Picture1.BackColor = RGB(r, g, b)

End Sub

不同灰度图像文件有各自的文链桐件格式和色彩格式(颜色指数格式,如GIF, 颜色值格式,归一化颜色值)你需要自己处理,这里不可能给你写一个万能程序。

r g b灰度 合成 RGB。 字节排列 可能 是 RGB 也可能是 BGR,也可带慧能 还要 带 A。

下面提供你合成基本原理,针对自己情况 改写。棚行坦

unsigned char r=0xff,g=0x80,b=0x40 //灰度值为1字节无符号数,数值0到0xff

unsigned int rgb // 合成 为 4 字节, ARGB

rgb = r <<16 | g <<8 | b // 用 位运算 ,移位和按位加

printf("%x ",rgb)

对每个像素 作循环 计算即可。

#include<reg52.h>  

//端口定义

sbit RED    =    P2^0//红光控制端,0点亮 

sbit GREEN  =    P2^1//绿光控制端,0点亮 

sbit BLUE   =    P2^2//蓝光控制端,0点亮

//函数声明

void Delay(unsigned int t)  

void RGB(unsigned char R ,unsigned char G ,unsigned char B) 

//主函数

void main (void)

{   

    RED = 1  GREEN = 1  BLUE = 1 

    //开始时先关闭LED,当然由于单片机上电就输出 1 ,所以可不写               

    while (1)         //主循环

    {

        //7色光依陵坦次逐渐变亮

        //改变调用顺序可以改变颜色先后次序

        RGB(1,1,0)

        RGB(1,0,1)

        RGB(1,0,0)

        RGB(0,1,1)

        RGB(0,1,0)

        RGB(0,0,1)

        RGB(0,0,0)

    }

}

 

void Delay(unsigned int t)

{

 while(--t)

}

//7色光依次逐渐变亮

RGB(unsigned char R ,unsigned char G ,unsigned char B)

{

    unsigned int pwm , set = 500         

    for(pwm=1pwm<setpwm++)

    { 

             RED    = 1        //熄灭LED 

             GREEN  = 1

             BLUE   = 1 

             Delay(set-pwm)//延时长度,500次循环中从599减至1

             RED    = R        逗汪皮

             GREEN  = G

             BLUE   = B        

             Delay(pwm)//延时长度,500次循环中从1加至599

    }

}

//改变set可以改变变化快慢

//同理你可以写出7色逐渐变暗的程序

这里的程序只是提供一个思路,你如果直接复制粘贴的话会出现格式错误

把每两行中间的空行删掉一般就可消除格式错误

如果再有什么小问题根据编译信息提示稍作修改就行

串电阻的话一般这样算:

R = [ U - U(LED) ] / I

U是LED和电阻总的电压,U(LED)是LED工作电压,I 是LED工作电流,一般10--20mA

电流大小取的适山差中就行了,再计算要串联的电阻值


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12307685.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存