联系方式:QQ917603226,danpianjikaifa@qq.com
个人提供单片机嵌入式培训,PLC 学习视频,电子元件销售,PLC销售
以及 PLC 和 DCS 周边产品开发
两个宏定义:
#defineSCR_XSIZE_TFT
#defineSCR_YSIZE_TFT
这说明我们在使用 3.5 寸屏幕的时候的,屏幕的像素边界值分别是 320 和
(320)
(240)
240。
我们这就知道 if 语句其实就是在 x,y 坐标在屏幕范围之内,把每个 c 值赋
给 LCD_BUFFER[y0+y][x0+x]这个数组,这个数组包含了所有 320x240 个像素点。
注意最后这个 p = p+2 ; 我们联系前面的 c =bmp[p+1]|(bmp[p]<<8) 语句,
我终于明白了这条语句的作用,就是让 bmp[]数组每两位组成一个像素点,其中
数组两个数前面的数左移 8 位作为 16 位色的高八位,后面的数作为低八位,赋
值给 c,按照逐行扫描的方式复制给屏幕的 BUFFER,即实现了全屏显示一张图片。
这样我们就分析完 Paint_Bmp()函数,这时候我们发现,如果我们要显示科
比投篮的大图片,我们势必要使 x0,y0 都为 0 开始显示,但是设定为 0 后,想显
示球的图片就不能正确定位了,一旦想要正确定位球的位置,必定把 x0,y0 设置
为球的图片第一个点,这时候全屏的图片又不能正常显示了,此时我们只能修改
这段程序,修改方法如下:
voidPaint_Bmp(intx0,inty0,inth,intl,unsignedcharbmp[])
{
intx,y;
U32c;
int p =0;
for( y = 0 ; y < l ;y++ )
{
for( x = 0 ; x < h ;x++ )
{
c =bmp[p+1] |(bmp[p]<<8) ;
if ( ((x0+x)
联系方式:QQ917603226,danpianjikaifa@qq.com
个人提供单片机嵌入式培训,PLC 学习视频,电子元件销售,PLC销售
以及 PLC 和 DCS 周边产品开发
的方格子, 方便我们来大概确定篮球走过轨迹的坐标值:
Paint_Bmp(0,0,320,240,kobeshot_320240);
while(1)
{
for(ii=0;ii<16;ii++){
Glib_Line(0,20*ii,320,20*ii,0xffff);
Glib_Line(20*ii,0,20*ii,240,0xffff);
if(ii==5||ii==10||ii==15){
Glib_Line(0,20*ii,320,20*ii,(0x00<<11) |(0x3f<<5) |(0x00));
Glib_Line(20*ii,0,20*ii,240,(0x00<<11) |(0x3f<<5) |(0x00));
}
}
}
然后根据图片中方格的位置,以及预估球的轨迹和这些方格之间的位置,写
函数。这里先不分析球的轨迹,完全按照教程先完成实验。
最终,经过作者的粗略分析暂时采用了以下版本的篮球抛物线运动坐标值来
模拟篮球走过的轨迹,并写了以下版本的代码供大家参考:
while(1)
{
for(ii=0;ii<16;ii++){
if(ii<8)iii=60-8*ii;
elseiii=(ii-7)*10;
Paint_Bmp(0,0,320,240,kobeshot_320240);
Glib_FilledRectangle(200,40,240,80,0x0000);//
(此处可以使用 photoshop 把之前那个图涂掉效果更好)
Paint_Bmp(205-10*ii,iii,14,14,ball_014014);
Delay(500);
}
}
如此操作之后,编译、生成 bin 文件并烧写进开发板就可以看到一款科比投
篮的动画了。