Microsoft Windows Logo(MSWLogo)的颜色设定

本文介绍了Microsoft Windows Logo (MSWLogo) 中的颜色设定方法,包括SETPENCOLOR、SETFLOODCOLOR及SETSCREENCOLOR等命令的使用。此外,还提供了一个Procedure用于展示基本颜色,并给出了一种通过十六进制颜色代码获取RGB值的方法。

今天研究了下 Microsoft Windows Logo(下文简称MSWLogo)中的颜色。

与颜色的设定有关的命令一共有三个:

1、SETPENCOLOR,可简写为SETPC,用于设定画笔颜色

2、SETFLOODCOLOR,可简写为SETFC,用于设定BITBLOCK命令绘制区域时的填充色

3、SETSCREENCOLOR,可简写为SETSC,用于设定屏幕背景色

这些命令后面可以接两类参数:

第一类参数是一个在1至15间的数字,每个数字代表了一种颜色,共有16种颜色,这些颜色在不同的Logo程序中可能会不一样。

如在turtleacademy.com中列举的logo基本色有:

0: black1: blue2: green3: cyan
4: red5: magenta6: yellow7: white
8: brown9: tan10: green11: aqua
12: salmon13: purple14: orange15: gray

(https://turtleacademy.com/files/lang.html)

在《The Great Logo Adventure》中列举的基本色为:

对于MSWLogo中的基础色,我们可以用下面的Procedure来看一下:

TO TEST_BASIC_COLOR
  FOR [COUNTER 0 15 1] [
    SETFLOODCOLOR :COUNTER
    BITBLOCK 100 160 - :COUNTER * 10
  ]
END

调用该方法后绘制的图像为:

第二类参数是一个包含三个元素的LIST,三个数字分别代表颜色的RGB值,如白色是[255 255 255]

另外,MSWLogo还支持另外一种方式去设置这三类颜色,即通过Set菜单下的PenColor、FloodColor、ScreenColor进行设置:

颜色设定界面如下:

鉴于现在表示颜色很多时候都使用三组十六进制数字,因此我也写了一个函数,传入十六进制颜色代码,返回颜色:

TO GET_COLOR :WEB_COLOR_CODE
  LOCALMAKE "A ITEM 1 :WEB_COLOR_CODE
  LOCALMAKE "B ITEM 2 :WEB_COLOR_CODE
  LOCALMAKE "C ITEM 3 :WEB_COLOR_CODE
  LOCALMAKE "D ITEM 4 :WEB_COLOR_CODE
  LOCALMAKE "E ITEM 5 :WEB_COLOR_CODE
  LOCALMAKE "F ITEM 6 :WEB_COLOR_CODE
  LOCALMAKE "AB GET_NUM_FROM_HEX_2 :A :B
  LOCALMAKE "CD GET_NUM_FROM_HEX_2 :C :D
  LOCALMAKE "EF GET_NUM_FROM_HEX_2 :E :F
  LOCALMAKE "COLOR_LIST []
  LOCALMAKE "COLOR_LIST LPUT :AB :COLOR_LIST
  LOCALMAKE "COLOR_LIST LPUT :CD :COLOR_LIST
  LOCALMAKE "COLOR_LIST LPUT :EF :COLOR_LIST
  OUTPUT :COLOR_LIST
END

TO GET_NUM_FROM_HEX :H
  IF :H = 0 [OUTPUT :H]
  IF :H = 1 [OUTPUT :H]
  IF :H = 2 [OUTPUT :H]
  IF :H = 3 [OUTPUT :H]
  IF :H = 4 [OUTPUT :H]
  IF :H = 5 [OUTPUT :H]
  IF :H = 6 [OUTPUT :H]
  IF :H = 7 [OUTPUT :H]
  IF :H = 8 [OUTPUT :H]
  IF :H = 9 [OUTPUT :H]
  IF :H = "A [OUTPUT 10]
  IF :H = "B [OUTPUT 11]
  IF :H = "C [OUTPUT 12]
  IF :H = "D [OUTPUT 13]
  IF :H = "E [OUTPUT 14]
  IF :H = "F [OUTPUT 15]
END

TO GET_NUM_FROM_HEX_2 :H1 :H2
  OUTPUT (GET_NUM_FROM_HEX :H1) * 16 + (GET_NUM_FROM_HEX :H2)
END

其中GET_COLOR根据十六进制颜色代码作为参数,返回指定颜色的RGB数组,我们可以就此封装一些我们需要使用的常用颜色,如:

TO COLOR_LAWNGREEN
  OUTPUT GET_COLOR "7CFC00
END

TO COLOR_SKYBLUE
  OUTPUT GET_COLOR "87CEEB
END

使用这些颜色时,直接将COLOR_XXX作为SETPENCOLOR、SETFLOODCOLOR、SETSCREENCOLOR的参数即可:

END

转载于:https://my.oschina.net/Tsybius2014/blog/709221

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值