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

saiche05 2005-08-05 03:12:35
我看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"
...全文
1822 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
saiche05 2005-09-07
  • 打赏
  • 举报
回复
数据窗口中有一个背景颜色是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)是什么东西。
saiche05 2005-08-23
  • 打赏
  • 举报
回复
自己顶一下!
saiche05 2005-08-15
  • 打赏
  • 举报
回复
谢谢各位的回答,但是我还是没有弄明白。

数据窗口中有一个背景颜色是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)是什么东西。
herrick 2005-08-09
  • 打赏
  • 举报
回复
个人的看法啊,
系统的颜色肯定不是这样转换的,这些颜色是系统不存在的颜色,
颜色的最大值就是#FFFFFF也就是255,255,255
transparent本来就不是一种确定的颜色啊,
但是作为usigned Long类型,536870912是一个合法的数值,
所以PB肯定是把这个数字作为一种特定的颜色或者颜色的处理机制的编号,
这个办法我也用过,详情请洽Sybase
^_^
saiche05 2005-08-09
  • 打赏
  • 举报
回复
数据窗口中有一个背景颜色是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)是什么东西。

怎么没有高手回答呀?
saiche05 2005-08-08
  • 打赏
  • 举报
回复
数据窗口中有一个背景颜色是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)是什么东西。
wu_07 2005-08-08
  • 打赏
  • 举报
回复
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
saiche05 2005-08-08
  • 打赏
  • 举报
回复
数据窗口中有一个背景颜色是transparent,它的颜色值是536870912,它跟rgb()是怎么转换的。PB怎么知道这个颜色值(536870912)是什么东西。
highscore2 2005-08-06
  • 打赏
  • 举报
回复
rgb返回的值就是颜色的值

如 messgegbox("test",rgb(255,255,255))
rickytwice 2005-08-05
  • 打赏
  • 举报
回复
颜色转化,我想应该这样吧:将long backcolor =16777214转化成16进制数,即 &FFFFFE。那么ff为red;ff为绿;fe为蓝。
至于系统颜色,呵呵,不知道了:)
零上三度 2005-08-05
  • 打赏
  • 举报
回复
学习了
本来我还以为是32K色呢
wu_07 2005-08-05
  • 打赏
  • 举报
回复
大于RGB(255,255,255) 都是系统的颜色,比如buttonface,与你的操作系统有关,比如在98和xp下buttonface的颜色是不同的
sywen 2005-08-05
  • 打赏
  • 举报
回复
PB中的説明寫得不夠詳細!
sywen 2005-08-05
  • 打赏
  • 举报
回复
頂!

740

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧