免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4512 | 回复: 2
打印 上一主题 下一主题

[C] 关于TC图形函数textattr()的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-19 23:52 |只看该作者 |倒序浏览
5可用积分
最近在看TC图形函数时,看到下面这样一段话:

Turbo C另外还提供了一个函数, 可以同时设置文本的字符和背景颜色, 这
个函数的调用格式为:
     void textattr(int attr);
    其中: attr的值表示颜色形式编码的信息, 每一位代表的含义如下:
       位      7   6   5   4      3   2   1   0
               B   b   b   b      c   c   c   c
               ↓  ┕━━━┙     ┖─────┘
              闪烁  背景颜色         字符颜色
    字节低四位cccc设置字符颜色(0到15), 4~6三位bbb设置背景颜色(0到7),
第7位B设置字符是否闪烁。假如要设置一个兰底黄字, 定义方法如下:
          textattr(YELLOW+(BLUE<<4));
    若再要求字符闪烁, 则定义变为:
          textattr(128+YELLOW+(BLUE<<4);
    注意:
      (1) 对于背景只有0 到7 共八种颜色, 若取大于7 小于15的数, 则代表的
颜色与减 7后的值对应的颜色相同。
      (2) 用textbackground()和textcolor() 函数设置了窗口的背景与字符颜
色后, 在没有用clrscr()函数清除窗口之前, 颜色不会改变,   直到使用了函数
clrscr(), 整个窗口和随后输出到窗口中的文本字符才会变成新颜色。
      (3) 用textattr()函数时背景颜色应左移4位, 才能使3位背景颜色移到正
确位置。



其中“注意”的第三点中说“用textattr()函数时背景颜色应左移4位, 才能使3位背景颜色移到正确位置。 ”,这句话看了之后不是很明白为什么“背景颜色应左移4位, 才能使3位背景颜色移到正确位置”,而且移位之后BLUE的值不是就发生了改变了吗,那就应该不是BLUE的这个值而是另外一个颜色值了。弄不明白,请各位帮忙解解,多谢!

论坛徽章:
0
2 [报告]
发表于 2008-10-20 07:49 |只看该作者
你就认为左移4位表示乘以10000好了

论坛徽章:
0
3 [报告]
发表于 2008-10-20 12:27 |只看该作者

回复 #2 faku 的帖子

谢谢,希望有哪位解释一下为什么要移位。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP