📄 800480.c
字号:
#include <stdio.h>
#include <dos.h>
#include <stdlib.h>
#include <math.h>
#include "bbgui.h"
//#define GUI_WIDTH 800
//#define GUI_HIGTH 480
#define COUNT 10
//初始化显示
void DisInit(void)
{
GuiSetMode(COLOR_LCDV_8BIT,SIZE_V800480,PLL_CLK_2); //256色模拟屏800480分辨率
GuiInit();
}
//演示画线
void DisLine(void)
{
int x,y,color=0;
GuiBoxFill(0,0,GUI_WIDTH-1,GUI_HIGTH-1,0x03); //蓝色背景
for(x=0,y=0;x<GUI_WIDTH;x+=10,color+=4)
GuiLine(x,y,GUI_WIDTH-1-x,GUI_HIGTH-1-y,color);
for(x=0,y=0;y<GUI_HIGTH;y+=10,color+=4)
GuiLine(x,y,GUI_WIDTH-1-x,GUI_HIGTH-1-y,color);
delay(1000);
}
//演示画圆
void DisCircle(void)
{
int x,y,r,color=0,i,t,j;
GuiBoxFill(0,0,GUI_WIDTH-1,GUI_HIGTH-1,0x03); //蓝色背景
for(i=0;i<COUNT;i++)
{
x=random(GUI_WIDTH-100)+50; //随机位置
y=random(GUI_HIGTH-100)+50;
t=(random(2)+1)<<3; //随机大小
r=12;
color=(random(0x3e)+1)<<2; //随机颜色
for(j=0;j<9;j++,r+=t)
{
if(j<5)GuiCircle(x,y,r,color); //画圆
if(j>3)GuiCircle(x,y,r-(t<<2),0x03); //删圆
delay(100);
}
}
delay(1000);
}
//下雨的效果
void DisRain(void)
{
int x0,x1,y1,a,t,i,j,color;
GuiBoxFill(0,0,GUI_WIDTH-1,GUI_HIGTH-1,0x03); //蓝色背景
for(i=0;i<COUNT;i++)
{
x1=random(GUI_WIDTH-100)+50; //随机位置
y1=random(GUI_HIGTH>>1)+100;
x0=x1-(y1>>2);
t=(random(2)+1)<<2; //随机大小
a=10;
color=(random(0x3e)+1)<<2; //随机颜色
for(j=0;j<4;j++)
{
GuiLine(x0+(j<<2),j<<4,x1-16+(j<<2),y1-64+(j<<4),color); //画雨点的路径线
delay(100);
GuiLine(x0+(j<<2),j<<4,x1-16+(j<<2),y1-64+(j<<4),3); //删雨点的路径线
}
for(j=0;j<8;j++,a+=t)
{
if(j<5)GuiEllipse(x1,y1,a<<1,a,color); //画椭圆形波浪
delay(100);
if(j>3)GuiEllipse(x1,y1,(a-(t<<2))<<1,a-(t<<2),0x03); //删椭圆形波浪
}
}
delay(1000);
}
//演示波形
#define SIN_COUNT 100
#define SIN_MAX 3
void DisWave(void)
{
int n,nn,page,wave[SIN_COUNT];
GuiSetActive(0); //设置当前活动页=0
GuiSetPage(0); //设置当前操作页=0
GuiBoxFill(0,0,GUI_WIDTH-1,GUI_HIGTH-1,3);
GuiSetPage(1); //设置当前操作页=1
GuiBoxFill(0,0,GUI_WIDTH-1,GUI_HIGTH-1,3);
page=1; //画非活动页
for(n=0;n<SIN_COUNT;n++)
{
wave[n]=(sin(2*3.14*n/SIN_COUNT*SIN_MAX)+1)/2*(GUI_HIGTH-1);
}
for(nn=1;nn<COUNT;nn++)
{
sleep(1);
for(n=0;n<SIN_COUNT-1;n++)
{
GuiLine(n*(GUI_WIDTH/SIN_COUNT),wave[n],\
(n+1)*(GUI_WIDTH/SIN_COUNT),wave[n+1],0xfc);
}
//交换活动页
GuiSetActive(page); //设置当前活动页
page = page ^ 0x01;
//画非活动页
GuiSetPage(page);
//擦除图形
GuiBoxFill(0,0,GUI_WIDTH-1,GUI_HIGTH-1,3);
for(n=0;n<SIN_COUNT-1;n++)
wave[n]= wave[n+1];//保存
n=SIN_COUNT+nn;
wave[SIN_COUNT-1]=(sin(2*3.14*n/SIN_COUNT*SIN_MAX)+1)/2*(GUI_HIGTH-1);
}
GuiSetActive(1);
GuiSetPage(1);
delay(1000);
}
//演示字符
void DisWord(void)
{
int page,i,j,k,t;
char str1[]="abcdefghijklmnopqrstuvwxyz1234567890\0";
char str2[]="蓝宇科技\0";
page=0;
GuiSetActive(0); //设置当前活动页=0
GuiSetPage(0); //设置当前操作页=0
GuiBoxFill(0,0,GUI_WIDTH-1,GUI_HIGTH-1,0);
GuiSetPage(1); //设置当前操作页=1
GuiBoxFill(0,0,GUI_WIDTH-1,GUI_HIGTH-1,0);
for(j=-7;j<(GUI_WIDTH>>3)+7;j+=4)
{
GuiSetZfFont(eMIRO0406);
GuiString(0,0,str1,0xff,0); //显示字符串
GuiSetZfFont(eMIRO0808);
GuiString(0,0+6,str1,0xff,0); //显示字符串
GuiSetZfFont(eMIRO0816);
GuiString(0,6+8,str1,0xff,0); //显示字符串
GuiSetZfFont(eMIRO1220);
GuiString(0,6+8+16,str1,0xff,0); //显示字符串
GuiSetZfFont(eMIRO1625);
GuiString(0,6+8+16+20,str1,0xff,0); //显示字符串
GuiSetZfFont(eMIRO2034);
GuiString(0,6+8+16+20+25,str1,0xff,0); //显示字符串
GuiSetHzFont(eHZK1616);
GuiString(6+8+16+20+25+34+16,6+8+16+20+25+34+16,str2,0xff,0);//显示字符串
t=GUI_WIDTH>>3;
for(i=0;i<8;i++) //颜色渐变效果
{
if((k=i+j)<t&k>=0)
GuiBoxFillAnd(k<<3,0,7+(k<<3),GUI_HIGTH-1,0x1c-(i<<2));
if((k=j-i)<t&k>=0)
GuiBoxFillAnd(k<<3,0,7+(k<<3),GUI_HIGTH-1,0x1c-(i<<2));
}
if(j>7)
GuiBoxFill(0,0,((j-7)<<3),GUI_HIGTH-1,0);
if(j<t-7)
GuiBoxFill(((j+7)<<3),0,GUI_WIDTH-1,GUI_HIGTH-1,0);
GuiSetActive(page);
page^=1;
GuiSetPage(page);
}
for(j=0;j<(GUI_WIDTH>>4)+1;j+=4)
{
GuiSetZfFont(eMIRO0406);
GuiString(0,0,str1,0xff,0); //显示字符串
GuiSetZfFont(eMIRO0808);
GuiString(0,0+6,str1,0xff,0); //显示字符串
GuiSetZfFont(eMIRO0816);
GuiString(0,6+8,str1,0xff,0); //显示字符串
GuiSetZfFont(eMIRO1220);
GuiString(0,6+8+16,str1,0xff,0); //显示字符串
GuiSetZfFont(eMIRO1625);
GuiString(0,6+8+16+20,str1,0xff,0); //显示字符串
GuiSetZfFont(eMIRO2034);
GuiString(0,6+8+16+20+25,str1,0xff,0); //显示字符串
GuiSetHzFont(eHZK1616);
GuiString(6+8+16+20+25+34+16,6+8+16+20+25+34+16,str2,0xff,0);//显示字符串
GuiBoxFillAnd((GUI_WIDTH>>1)-(j<<3),0,(GUI_WIDTH>>1)+(j<<3),GUI_HIGTH-1,0x1c);
for(i=0;i<8;i++) //颜色渐变效果
{
if((k=i+j)<=GUI_WIDTH>>4)
{
GuiBoxFillAnd((GUI_WIDTH>>1)+(k<<3),0,7+(GUI_WIDTH>>1)+(k<<3),GUI_HIGTH-1,0x1c-(i<<2));
GuiBoxFillAnd((GUI_WIDTH>>1)-(k<<3)-7,0,(GUI_WIDTH>>1)-(k<<3),GUI_HIGTH-1,0x1c-(i<<2));
}
}
if((k=i+j)<=GUI_WIDTH>>4)
{
GuiBoxFillAnd(0,0,(GUI_WIDTH>>1)-(k<<3),GUI_HIGTH-1,0);
GuiBoxFillAnd((GUI_WIDTH>>1)+(k<<3),0,GUI_WIDTH-1,GUI_HIGTH-1,0);
}
GuiSetActive(page);
page^=1;
GuiSetPage(page);
}
GuiSetActive(1);
GuiSetPage(1);
delay(1000);
}
//演示位图
int PutBmp(int x,int y,int mode,char *fpath);
void disapear(int m,int color);
void main(void)
{
DisInit();
while(1){
disapear(1,3);
DisLine();
disapear(3,0xc1);
disapear(3,3);
DisCircle();
disapear(2,0xc1);
disapear(2,3);
DisRain();
disapear(4,0xc1);
disapear(4,3);
DisWave();
disapear(5,0xc1);
disapear(5,3);
DisWord();
disapear(7,3);
PutBmp(0,0,0,"800480.bmp");
delay(2000);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -