|
在NXT可编程砖的液晶屏幕上能显示100*64像素的黑白点阵。
在NXC中规定NXT的屏幕X方向取值0-99,Y方向取值0-63,坐标(0,0)为左下角。
本篇相关函数:
NumOut(x, y, value, clear = false) 显示数字
TextOut(x, y, msg, clear = false) 显示文本
GraphicOut(x, y, filename, clear = false) 显示一个图片文件,起点为(x,y)
CircleOut(x, y, radius, clear = false) 以坐标(x,y)为圆心画圆,radius为半径
LineOut(x1, y1, x2, y2, clear = false) 绘制从坐标(x1,x2)到 (x2,y2)的直线
PointOut(x, y, clear = false) 在坐标(x,y)处画点
RectOut(x, y, width, height, clear = false) 以(x,y)为起点,横向延伸width像素,纵向延伸heigh像素,画矩形
ResetScreen() 复位屏幕
ClearScreen() 清除屏幕
下面以TextOut(x, y, msg, clear = false)函数为例介绍一下本篇内容。
示例1:
- task main()
- {
- while(1){
- TextOut(0, LCD_LINE1, "Hello World!");
- }
- }
复制代码 编译运行后的效果为在NXT屏幕一直显示 Hello World!,
仔细看的读者会发现示例函数和标准的函数有区别,示例函数只有3个参数,而标准的有4个参数,这个是为什么呢?
原来上面所列函数中的clear = false部分是可以省略的,默认为0,意思为默认不清除!
另外说明一下LCD_LINE1这个参数,NXC中定义NXT屏幕分为8行,分别为LCD_LINEX(X=0,1,2,……7)。
那清除是什么效果呢?
接着看
示例2- task main()
- {
- while(1){
- TextOut(0, LCD_LINE1, "Hello World!");
- Wait(5000);
- TextOut(0, LCD_LINE8, "Hello World!", 1);
- Wait(5000);
- }
- }
复制代码 编译运行示例2后大家可以看出效果了,第一行先是显示Hello World! 5秒,然后清除,接着第8行显示5秒,但不清除。这个就是函数最后一个参数的作用,函数后面参数为真时,先进行全屏清除操作,然后才进行输出显示操作。
那为什么要搞得这么复杂,清除不清楚这么用呢,
示例3
- task main()
- {
- int i;
- while(1){
- TextOut(0, LCD_LINE4, "I am years old!", 1);
- for(i=1;i<100;i++)
- {
- NumOut(26, LCD_LINE4, i);
- Wait(1000);
- }
- }
- }
复制代码 好了,一般在文本和数字组合,或者其他组合的时候会这样写。记住,如果想静态输出一段,同时动态输出一段的话,为了不让动态的那部分产生显示叠加则需要先清除后显示。并且清除操作应该像示例一样要清除在先,如果顺序反了就只显示数字,而没有“I AM YEARS OLD"了。
最后给大家留个作业,
1.根据本章所学写出一个画同心圆的程序出来。
2.利用矩形框和线条函数,模仿画出一个进度条(读取进度条,一个慢慢填充进度框的动画效果)。安装软件或者玩游戏时候经常出现的那种。
作业答案:
|
|