欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

嵌入式 在开发板上画圆

程序员文章站 2022-05-21 09:38:05
...

嵌入式 在开发板上画圆

一、简述

         记--在开发板(6818,cortex,800W*480H)上画出圆形。

         源码打包:链接:https://pan.baidu.com/s/123gNBZecp_52lC-LZpUt5A 密码:zela

二、例子

     1、 一个静态的圆。

        主要测试代码

void lcd_draw_point(unsigned int x, unsigned int y, unsigned int color, unsigned int *lcd_ptr)
{
	if( x<LCD_WIDTH && y<LCD_HEIGHT )
	{
		*(lcd_ptr+LCD_WIDTH*y+x) = color;
	}
}

void lcd_draw_circle(unsigned r_x, unsigned int r_y, unsigned int radius, unsigned int *lcd_ptr)
{
	unsigned int x_begin, y_begin;
	if(r_x-radius<0)
	{
		r_x = radius;
	}
	if(r_y-radius<0)
	{
		r_y = radius;
	}
        for(y_begin=r_y-radius; y_begin<r_y+radius; y_begin++)
        {
       		 for(x_begin=r_x-radius; x_begin<r_x+radius; x_begin++)
                 {
                       if((r_x-x_begin)*(r_x-x_begin) + (r_y-y_begin)*(r_y-y_begin) < radius*radius)
                       {
                                lcd_draw_point(x_begin, y_begin, 0x0000ff00, lcd_ptr);
                       }
                 }
       }
}

        编译代码,在开发板运行:

         嵌入式 在开发板上画圆

         嵌入式 在开发板上画圆

        代码效果

        嵌入式 在开发板上画圆

     2、滚动的圆

         主要测试代码:

         

void lcd_draw_run_circle(unsigned r_x, unsigned int r_y, unsigned int radius, unsigned int mv_speed, unsigned int *lcd_ptr)
{
	int x_mv = mv_speed, y_mv = mv_speed;
	unsigned int x_begin, y_begin;
	if(r_x-radius<0)
	{
		r_x = radius;
	}
	if(r_y-radius<0)
	{
		r_y = radius;
	}
	while(1)
	{
        	for(y_begin=r_y-radius; y_begin<r_y+radius; y_begin++)
        	{
       			 for(x_begin=r_x-radius; x_begin<r_x+radius; x_begin++)
                 	{
                       		if((r_x-x_begin)*(r_x-x_begin) + (r_y-y_begin)*(r_y-y_begin) < radius*radius)
                       		{
                        	        lcd_draw_point(x_begin, y_begin, 0x0000ff00, lcd_ptr);
                       		}
                 	}
		}
		
		if(r_x<radius || r_x>= LCD_WIDTH - radius)
		{
			x_mv = -x_mv;
		}		
		r_x += x_mv;	
		if(r_y<radius || r_y>= LCD_HEIGHT - radius)
		{
			y_mv = -y_mv;
		}		
		r_y += y_mv;

		for(y_begin=0; y_begin<LCD_HEIGHT; y_begin++)
                {
                         for(x_begin=0; x_begin<LCD_WIDTH; x_begin++)
                        {
                                if((r_x-x_begin)*(r_x-x_begin) + (r_y-y_begin)*(r_y-y_begin) >= radius*radius)
                                {   
                                        lcd_draw_point(x_begin, y_begin, WHITE_COLOR, lcd_ptr);
                                }   
                        }   
                }

       }
}

        代码效果

        嵌入式 在开发板上画圆

三、补充

      颜色:0xaarrggbb 其中aa是透明度,rr是红色,gg是绿色,bb蓝色。(三原色0~255)

                 0x00FFFFFF白色