delph中颜色问题?

seikoo 2002-08-24 12:12:54
funtion Tform.randomcolor;
var red,green,blue:Byte;
begin
red:=random(255);
green:=random(255);
blue:=random(255);
result:=red or (green shl 16) or (blue shl 8);
end;
result应该是red green blue合成的颜色吧?
那为什么不用“+”而用“or”?
green shl 16和blue shl 8 是什么意思?
为什么不result:=red or green or blue;???
本人不才,望指点。
...全文
27 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
mengxianbao1521 2002-08-26
  • 打赏
  • 举报
回复
这里的移位,还可以用到很多的地方,如:多国语言版本的程序。
他是一种汇编中的思想,希望会对你有所启发。
seikoo 2002-08-26
  • 打赏
  • 举报
回复
多谢指点,谢谢!那就是说,red是8位的,blue是16位的,green是24位的咯?
Liujc 2002-08-24
  • 打赏
  • 举报
回复
在这时or 和 +是一样的

因为该程序所要得到的是24位颜色,所以必须移位在相加。如果直接相加,那么所得到的只为8位颜色。
lvqiang 2002-08-24
  • 打赏
  • 举报
回复
green shl 16 :将green 左移16位,变成24位数字。
blue shl 8 :将blue 左移8位,变成16位数字
这样相加就得到了24位数字。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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