hur.cn - 华软网

 热门搜索

pb怎么知道rgb()值和颜色值(long型)的对应关系呢

  作者:未知    来源:网络    更新时间:2018/6/13
我看PB书上说:
颜色值的计算公式为:颜色值=65536*blue+256*green+red
并且0<=blue<=255,0<=green<=255,0<=red<=255
即:颜色值=RGB(red,green,blue)
比如说:255=RGB(255,0,0)
        16777214=RGB(254,255,255)

我计算出来的颜色值的最大值是16777215,我在用户自定义颜色中最大也只能设RGB(255,255,255),
但是我发现我的系统中有很多颜色值大于RGB(255,255,255),
那么怎么把颜色值转化为相应的RGB()值呢,或者说pb的应用程序怎么知道这个颜色值呢
比如说:long backcolor = 30000000
     那么   30000000=RGB(?,?,?)
还有在数据窗口中有一个背景颜色是transparent,它的颜色值是536870912,它跟rgb()是怎么转换的。
background.color="536870912"
------华软网友回答------
頂!
------华软网友回复------
PB中的説明寫得不夠詳細!
------华软网友回复------
大于RGB(255,255,255) 都是系统的颜色,比如buttonface,与你的操作系统有关,比如在98和xp下buttonface的颜色是不同的
------华软网友回复------
学习了
本来我还以为是32K色呢
------华软网友回复------
颜色转化,我想应该这样吧:将long backcolor =16777214转化成16进制数,即 &FFFFFE。那么ff为red;ff为绿;fe为蓝。
至于系统颜色,呵呵,不知道了:)
------华软网友回复------
rgb返回的值就是颜色的值

如 messgegbox("test",rgb(255,255,255))
------华软网友回复------
数据窗口中有一个背景颜色是transparent,它的颜色值是536870912,它跟rgb()是怎么转换的。PB怎么知道这个颜色值(536870912)是什么东西。
------华软网友回复------
private subroutine of_color2rgb (long lg_color, ref integer r, ref integer g, ref integer b);//长整型颜色值,转为RGB型,需要三个ref参数

b = lg_color / 65536
g = (lg_color - b * 65536) / 256
r = lg_color - g * 256 - b * 65536


end subroutine
------华软网友回复------
数据窗口中有一个背景颜色是transparent,它的颜色值是536870912,它跟rgb()是怎么转换的。
如果不能转换成RGB(),PB怎么知道这个颜色值(536870912)是什么东西。
按常规转换是:536870912=RGB(0,0,8192)
这根本就是个错误,因为8192不满足0<=blue<=255,0<=green<=255,0<=red<=255。
在PB中根本就无法显示:RGB(0,0,8192)的结果是:颜色值(536870912)
即:messagebox("",RGB(0,0,8192))或messagebox("",string(RGB(0,0,8192)))的结果多时0。

PB怎么知道这个颜色值(536870912)是什么东西。

------华软网友回复------
数据窗口中有一个背景颜色是transparent,它的颜色值是536870912,它跟rgb()是怎么转换的。
如果不能转换成RGB(),PB怎么知道这个颜色值(536870912)是什么东西。
按常规转换是:536870912=RGB(0,0,8192)
这根本就是个错误,因为8192不满足0<=blue<=255,0<=green<=255,0<=red<=255。
在PB中根本就无法显示:RGB(0,0,8192)的结果是:颜色值(536870912)
即:messagebox("",RGB(0,0,8192))或messagebox("",string(RGB(0,0,8192)))的结果多时0。

PB怎么知道这个颜色值(536870912)是什么东西。

怎么没有高手回答呀?
------华软网友回复------
个人的看法啊,
系统的颜色肯定不是这样转换的,这些颜色是系统不存在的颜色,
颜色的最大值就是#FFFFFF也就是255,255,255
transparent本来就不是一种确定的颜色啊,
但是作为usigned Long类型,536870912是一个合法的数值,
所以PB肯定是把这个数字作为一种特定的颜色或者颜色的处理机制的编号,
这个办法我也用过,详情请洽Sybase
^_^
------华软网友回复------
谢谢各位的回答,但是我还是没有弄明白。

数据窗口中有一个背景颜色是transparent,它的颜色值是536870912,它跟rgb()是怎么转换的。
如果不能转换成RGB(),PB怎么知道这个颜色值(536870912)是什么东西。
按常规转换是:536870912=RGB(0,0,8192)
这根本就是个错误,因为8192不满足0<=blue<=255,0<=green<=255,0<=red<=255。
在PB中根本就无法显示:RGB(0,0,8192)的结果是:颜色值(536870912)
即:messagebox("",RGB(0,0,8192))或messagebox("",string(RGB(0,0,8192)))的结果都是0。

PB怎么知道这个颜色值(536870912)是什么东西。
------华软网友回复------
自己顶一下!
------华软网友回复------
数据窗口中有一个背景颜色是transparent,它的颜色值是536870912,它跟rgb()是怎么转换的。
如果不能转换成RGB(),PB怎么知道这个颜色值(536870912)是什么东西。
按常规转换是:536870912=RGB(0,0,8192)
这根本就是个错误,因为8192不满足0<=blue<=255,0<=green<=255,0<=red<=255。
在PB中根本就无法显示:RGB(0,0,8192)的结果是:颜色值(536870912)
即:messagebox("",RGB(0,0,8192))或messagebox("",string(RGB(0,0,8192)))的结果都是0。

PB怎么知道这个颜色值(536870912)是什么东西。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。