找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5626|回复: 0
收起左侧

stm32单片机自制pda之ui.c源代码

[复制链接]
ID:37685 发表于 2013-9-5 14:36 | 显示全部楼层 |阅读模式
完整代码下载地址:http://www.51hei.com/f/29782212PDA.rar
<br>
#include <stm32f10x_lib.h>
#include "ui.h"
#include "ILI9320.h"
#include "string.h"//文本框用

//按钮模型
//x1y1左上角,x2y2右下角,确定方框范围
//lon文本长度
//size文本大小
//p文本
//mode为按钮状态
void Button(u16 x1,u16 y1,u16 x2,u16 y2,u8 mode,u8 *p,u16 lon,u8 size)
{
	u16 dx=(x2-x1-lon+2)/2;
	u16 dy=(y2-y1-size+2)/2;
	switch(mode)
	{
		case 0:
		{
			clear(x1,y1,x2,y2,color(0xd4,0xd0,0xc8));
			_line_((x1+1),(y1+1),(x2-1),(y1+1),color(255,255,255));
			_line_((x1+1),(y1+1),(x1+1),(y2-1),color(255,255,255));
			_line_(x1,y2,x2,y2,color(0x40,0x40,0x40));
			_line_(x2,y1,x2,y2,color(0x40,0x40,0x40));
			_line_((x1+1),(y2-1),(x2-1),(y2-1),color(0x80,0x80,0x80));
			_line_((x2-1),(y1+1),(x2-1),(y2-1),color(0x80,0x80,0x80));
			if(p!=NULL)show_string((x1+dx),(y1+dy),lon,p,size,color(0,0,0));
		}break;
		case 1:
		{
			clear((x1+1),(y1+1),(x2-1),(y2-1),color(0xd4,0xd0,0xc8));
			_line_((x1+1),(y1+1),(x2-1),(y1+1),color(0x80,0x80,0x80));
			_line_((x1+1),(y1+1),(x1+1),(y2-1),color(0x80,0x80,0x80));
			_line_(x1,y1,x2,y1,color(0x40,0x40,0x40));
			_line_(x1,y1,x1,y2,color(0x40,0x40,0x40));
			_line_(x2,y1,x2,y2,color(255,255,255));
			_line_(x1,y2,x2,y2,color(255,255,255));
			if(p!=NULL)show_string((x1+dx+1),(y1+dy+1),lon,p,size,color(0,0,0));
		}break;
		case 2:
		{
			clear(x1,y1,x2,y2,color(0xd4,0xd0,0xc8));
			_line_(x1,y1,x2,y1,color(255,255,255));
			_line_(x1,y1,x1,(y2-1),color(255,255,255));
			_line_(x1,y2,x2,y2,color(0x40,0x40,0x40));
			_line_(x2,y1,x2,y2,color(0x40,0x40,0x40));
			_line_((x1+1),(y2-1),(x2-1),(y2-1),color(0x80,0x80,0x80));
			_line_((x2-1),(y1+1),(x2-1),(y2-1),color(0x80,0x80,0x80));
			if(p!=NULL)
			{
				show_string((x1+dx+1),(y1+dy+1),lon,p,size,color(255,255,255));
				show_string((x1+dx),(y1+dy),lon,p,size,color(0x80,0x80,0x80));
			}
		}break;
	}
}

//上按键模型
//横宽最小9像素,竖宽最小7像素
void Button_Up(u16 x1,u16 y1,u16 x2,u16 y2,u8 mode)
{
	u16 lon_y,lon_x;
	lon_x=((x2-x1)-5)/2;
	lon_y=((y2-y1)-3)/2;
	Button(x1,y1,x2,y2,mode,NULL,0,0);
	if(mode==UNPRESS)
	{
		dot(x1+lon_x+1,y1+lon_y+3,color(0,0,0));
		dot(x1+lon_x+2,y1+lon_y+3,color(0,0,0));
		dot(x1+lon_x+3,y1+lon_y+3,color(0,0,0));
		dot(x1+lon_x+4,y1+lon_y+3,color(0,0,0));
		dot(x1+lon_x+5,y1+lon_y+3,color(0,0,0));
		dot(x1+lon_x+2,y1+lon_y+2,color(0,0,0));
		dot(x1+lon_x+3,y1+lon_y+2,color(0,0,0));
		dot(x1+lon_x+4,y1+lon_y+2,color(0,0,0));
		dot(x1+lon_x+3,y1+lon_y+1,color(0,0,0));
	}
	else if(mode==PRESS)
	{
		dot(x1+lon_x+2,y1+lon_y+4,color(0,0,0));
		dot(x1+lon_x+3,y1+lon_y+4,color(0,0,0));
		dot(x1+lon_x+4,y1+lon_y+4,color(0,0,0));
		dot(x1+lon_x+5,y1+lon_y+4,color(0,0,0));
		dot(x1+lon_x+6,y1+lon_y+4,color(0,0,0));
		dot(x1+lon_x+3,y1+lon_y+3,color(0,0,0));
		dot(x1+lon_x+4,y1+lon_y+3,color(0,0,0));
		dot(x1+lon_x+5,y1+lon_y+3,color(0,0,0));
		dot(x1+lon_x+4,y1+lon_y+2,color(0,0,0));
	}
	else if(mode==INVALID)
	{
		dot(x1+lon_x+2,y1+lon_y+4,color(255,255,255));
		dot(x1+lon_x+3,y1+lon_y+4,color(255,255,255));
		dot(x1+lon_x+4,y1+lon_y+4,color(255,255,255));
		dot(x1+lon_x+5,y1+lon_y+4,color(255,255,255));
		dot(x1+lon_x+6,y1+lon_y+4,color(255,255,255));
		dot(x1+lon_x+3,y1+lon_y+3,color(255,255,255));
		dot(x1+lon_x+4,y1+lon_y+3,color(255,255,255));
		dot(x1+lon_x+5,y1+lon_y+3,color(255,255,255));
		dot(x1+lon_x+4,y1+lon_y+2,color(255,255,255));

		dot(x1+lon_x+1,y1+lon_y+3,color(0x80,0x80,0x80));
		dot(x1+lon_x+2,y1+lon_y+3,color(0x80,0x80,0x80));
		dot(x1+lon_x+3,y1+lon_y+3,color(0x80,0x80,0x80));
		dot(x1+lon_x+4,y1+lon_y+3,color(0x80,0x80,0x80));
		dot(x1+lon_x+5,y1+lon_y+3,color(0x80,0x80,0x80));
		dot(x1+lon_x+2,y1+lon_y+2,color(0x80,0x80,0x80));
		dot(x1+lon_x+3,y1+lon_y+2,color(0x80,0x80,0x80));
		dot(x1+lon_x+4,y1+lon_y+2,color(0x80,0x80,0x80));
		dot(x1+lon_x+3,y1+lon_y+1,color(0x80,0x80,0x80));
	}
}

//下按键按钮
void Button_Down(u16 x1,u16 y1,u16 x2,u16 y2,u8 mode)
{
	u16 lon_y,lon_x;
	lon_x=((x2-x1)-5)/2;
	lon_y=((y2-y1)-3)/2;
	Button(x1,y1,x2,y2,mode,NULL,0,0);
	if(mode==UNPRESS)
	{
		dot(x1+lon_x+1,y1+lon_y+1,color(0,0,0));
		dot(x1+lon_x+2,y1+lon_y+1,color(0,0,0));
		dot(x1+lon_x+3,y1+lon_y+1,color(0,0,0));
		dot(x1+lon_x+4,y1+lon_y+1,color(0,0,0));
		dot(x1+lon_x+5,y1+lon_y+1,color(0,0,0));
		dot(x1+lon_x+2,y1+lon_y+2,color(0,0,0));
		dot(x1+lon_x+3,y1+lon_y+2,color(0,0,0));
		dot(x1+lon_x+4,y1+lon_y+2,color(0,0,0));
		dot(x1+lon_x+3,y1+lon_y+3,color(0,0,0));
	}
	else if(mode==PRESS)
	{
		dot(x1+lon_x+2,y1+lon_y+2,color(0,0,0));
		dot(x1+lon_x+3,y1+lon_y+2,color(0,0,0));
		dot(x1+lon_x+4,y1+lon_y+2,color(0,0,0));
		dot(x1+lon_x+5,y1+lon_y+2,color(0,0,0));
		dot(x1+lon_x+6,y1+lon_y+2,color(0,0,0));
		dot(x1+lon_x+3,y1+lon_y+3,color(0,0,0));
		dot(x1+lon_x+4,y1+lon_y+3,color(0,0,0));
		dot(x1+lon_x+5,y1+lon_y+3,color(0,0,0));
		dot(x1+lon_x+4,y1+lon_y+4,color(0,0,0));
	}
	else if(mode==INVALID)
	{
		dot(x1+lon_x+2,y1+lon_y+2,color(255,255,255));
		dot(x1+lon_x+3,y1+lon_y+2,color(255,255,255));
		dot(x1+lon_x+4,y1+lon_y+2,color(255,255,255));
		dot(x1+lon_x+5,y1+lon_y+2,color(255,255,255));
		dot(x1+lon_x+6,y1+lon_y+2,color(255,255,255));
		dot(x1+lon_x+3,y1+lon_y+3,color(255,255,255));
		dot(x1+lon_x+4,y1+lon_y+3,color(255,255,255));
		dot(x1+lon_x+5,y1+lon_y+3,color(255,255,255));
		dot(x1+lon_x+4,y1+lon_y+4,color(255,255,255));

		dot(x1+lon_x+1,y1+lon_y+1,color(0x80,0x80,0x80));
		dot(x1+lon_x+2,y1+lon_y+1,color(0x80,0x80,0x80));
		dot(x1+lon_x+3,y1+lon_y+1,color(0x80,0x80,0x80));
		dot(x1+lon_x+4,y1+lon_y+1,color(0x80,0x80,0x80));
		dot(x1+lon_x+5,y1+lon_y+1,color(0x80,0x80,0x80));
		dot(x1+lon_x+2,y1+lon_y+2,color(0x80,0x80,0x80));
		dot(x1+lon_x+3,y1+lon_y+2,color(0x80,0x80,0x80));
		dot(x1+lon_x+4,y1+lon_y+2,color(0x80,0x80,0x80));
		dot(x1+lon_x+3,y1+lon_y+3,color(0x80,0x80,0x80));
	}
}

//窗口函数
//标题高18
void Windows(u16 x1,u16 y1,u16 x2,u16 y2,u8 *title,u8 size)
{
	//0a246a
	//a6caf0
	u16	dx=x2-x1-4;//标题栏长度缓存
	float a=0x0a,b=0x24,c=0x6a;
	u16 i,j;
	clear(x1,y1,x2,y2,color(0xd4,0xd0,0xc8));
	//窗口边界
	_line_((x1+1),(y1+1),(x2-1),(y1+1),color(255,255,255));
	_line_((x1+1),(y1+1),(x1+1),(y2-1),color(255,255,255));
	_line_((x1+1),(y2-1),(x2-1),(y2-1),color(0x80,0x80,0x80));
	_line_((x2-1),(y1+1),(x2-1),(y2-1),color(0x80,0x80,0x80));
	_line_(x1,y2,x2,y2,color(0x40,0x40,0x40));
	_line_(x2,y1,x2,y2,color(0x40,0x40,0x40));			
	for(j=0;j<dx;j++)//标题栏,高度为字体高度+4
	{
		for(i=0;i<(4+size);i++)dot((x1+2+j),(y1+2+i),color(a,b,c));
		a+=(float)(0xa6-0x0a)/dx;
		b+=(float)(0xca-0x24)/dx;
		c+=(float)(0xf0-0x6a)/dx;
	}
	show_string((x1+4),(y1+4),dx,title,size,color(255,255,255));//标题栏文字
}

//窗体中的填充框
//x1,y1左上角
//x2y2右上角
//sta为0,不显示光标,1显示全选光标,2显示普通光标
void Hole(u16 x1,u16 y1,u16 x2,u16 y2)
{
	clear(x1,y1,x2,y2,color(255,255,255));
	_line_(x1,y1,x2,y1,color(0x40,0x40,0x40));
	_line_(x1,y1,x1,y2,color(0x40,0x40,0x40));
	_line_((x1+1),(y1+1),(x2-1),(y1+1),color(0x80,0x80,0x80));
	_line_((x1+1),(y1+1),(x1+1),(y2-1),color(0x80,0x80,0x80));
	_line_((x2-1),(y1+1),(x2-1),(y2-1),color(0xd4,0xd0,0xc8));
	_line_((x1+1),(y2-1),(x2-1),(y2-1),color(0xd4,0xd0,0xc8));
	_line_(x2,y1,x2,y2,color(255,255,255));
	_line_(x1,y2,x2,y2,color(255,255,255));
}

//进度条
//x1y1左上角
//lon进度条长度
//index当前数值
//total总数值
//font为是否显示数字(1显示)
//固定高度14像素
void Progress_Bar(u16 x1,u16 y1,u16 lon,u32 index,u32 total,u8 font)
{
	u16 i;
	u8 j;
	float percent=(((float)index/total));//得到加载百分数百分数
	u16 temp;
	if(percent>1)percent=1;
	temp=lon*percent;//得到当前进度条加载数量
	_line_(x1,y1,(x1+lon),y1,color(0,0,0));
	_line_(x1,(y1+14),(x1+lon),(y1+14),color(0,0,0));
	_line_(x1,y1,x1,(y1+14),color(0,0,0));
	_line_((x1+lon),y1,(x1+lon),(y1+14),color(0,0,0));
	for(i=0;i<temp;i++)//加载蓝色部分
	{
		for(j=0;j<13;j++)dot((x1+1+i),(y1+1+j),color(0,0,255));
	}
	for(i=0;i<(lon-temp-1);i++)//加载白色部分
	{
		for(j=0;j<13;j++)dot((x1+1+i+temp),(y1+1+j),color(255,255,255));
	}
	if(font)
	{
		if(temp<=(x1+((lon-18)/2)+18))
		{
			if((percent*100)<10)
			{
				show_nums((x1+((lon-12)/2)),(y1+2),((u8)(percent*100)),1,12,color(0,0,0),0);
				show_string((x1+((lon-12)/2)+6),(y1+2),13,"%",12,color(0,0,0));
			}
			else if(((percent*100)>9)&&((percent*100)<100))
			{
				show_nums((x1+((lon-18)/2)),(y1+2),((u8)(percent*100)),2,12,color(0,0,0),0);
				show_string((x1+((lon-18)/2)+12),(y1+2),13,"%",12,color(0,0,0));
			}
			else if(percent==1)
			{
				show_nums((x1+((lon-24)/2)),(y1+2),((u8)(percent*100)),3,12,color(0,0,0),0);
				show_string((x1+((lon-24)/2)+18),(y1+2),13,"%",12,color(0,0,0));
			}
			//变更字体颜色
			for(i=0;i<(temp-((lon-18)/2));i++)
			{
				for(j=0;j<13;j++)
				{
					if(rdot((x1+i+(lon-18)/2),(y1+1+j))==0)dot((x1+i+(lon-18)/2),(y1+1+j),color(255,255,255));
				}
			}
		}
		else
		{
			if((percent*100)<10)
			{
				show_nums((x1+((lon-12)/2)),(y1+2),((u8)(percent*100)),1,12,color(255,255,255),0);
				show_string((x1+((lon-12)/2)+6),(y1+2),13,"%",12,color(255,255,255));
			}
			else if(((percent*100)>9)&&((percent*100)<100))
			{
				show_nums((x1+((lon-18)/2)),(y1+2),((u8)(percent*100)),2,12,color(255,255,255),0);
				show_string((x1+((lon-18)/2)+12),(y1+2),13,"%",12,color(255,255,255));
			}
			else if(percent==1)
			{
				show_nums((x1+((lon-24)/2)),(y1+2),((u8)(percent*100)),3,12,color(255,255,255),0);
				show_string((x1+((lon-24)/2)+18),(y1+2),13,"%",12,color(255,255,255));
 			}
		}
	}
}

//滚动条
//滚动条宽度默认10
//x1,y1为起始坐标,lon为滚动条长度,必须大于20
//button_up为上按钮模式,button_down为下按钮模式,page为每页项目数,total为总项目数
//addr为当前位置
void Rolling_Bar(u16 x1,u16 y1,u16 lon,u8 button_up,u8 button_down,u32 addr,u32 page,u32 total)
{
	u32 l=((float)(lon-24)/total)*page;//得到滚动条长度
	u32 offset=((float)(lon-24-l)/(total-page))*addr;//获得每翻动一个项目所偏移的像素
	Button_Up(x1,y1,(x1+12),(y1+12),button_up);//上按钮
	Button_Down(x1,(y1+lon-12),(x1+12),(y1+lon),button_down);//下按钮
	clear(x1,(y1+12),(x1+12),(y1+lon-12),color(0x7d,0x8b,0x9a));
	Button(x1,(y1+12+offset),(x1+12),(y1+12+offset+l),UNPRESS,NULL,0,0);
}

//显示方框特效
//显示一个图标选中方框
//边框宽2像素
void dis_kuang(u16 x1,u16 y1,u16 x2,u16 y2,u16 color)
{
//	_line_(x,y,(x+59),y,color);
//	_line_(x,(y+1),(x+59),(y+1),color);
//	_line_(x,y,x,(y+61),color);
//	_line_((x+1),y,(x+1),(y+61),color);
//	_line_((x+58),y,(x+58),(y+61),color);
//	_line_((x+59),y,(x+59),(y+61),color);
//	_line_(x,(y+61),(x+59),(y+61),color);
//	_line_(x,(y+62),(x+59),(y+62),color);	
	//顶边
	_line_(x1,y1,x2,y1,color);
	_line_(x1,(y1+1),x2,(y1+1),color);
	//左边
	_line_(x1,y1,x1,y2,color);
	_line_((x1+1),y1,(x1+1),y2,color);
	//右边
	_line_((x2-1),y1,(x2-1),y2,color);
	_line_(x2,y1,x2,y2,color);
	//下边
	_line_(x1,y2,x2,y2,color);
	_line_(x1,(y2+1),x2,(y2+1),color);	
}

//播放器按钮与图标
//固定为24×24
//播放按钮
void Button_Play(u16 x,u16 y,u8 mode)
{
	Button(x,y,(x+24),(y+24),mode,NULL,0,0);
	if(mode==UNPRESS)
	{
		_line_((x+6),(y+6),(x+6),(y+6+12),color(0,0,0));//12
		_line_((x+7),(y+7),(x+7),(y+7+10),color(0,0,0));//10
		_line_((x+8),(y+8),(x+8),(y+8+8),color(0,0,0));//8
		_line_((x+9),(y+9),(x+9),(y+9+6),color(0,0,0));//6
		_line_((x+10),(y+10),(x+10),(y+10+4),color(0,0,0));//4
		_line_((x+11),(y+11),(x+11),(y+11+2),color(0,0,0));//2
		_line_((x+12),(y+6),(x+12),(y+6+12),color(0,0,0));//12
		_line_((x+13),(y+6),(x+13),(y+6+12),color(0,0,0));//12
		_line_((x+16),(y+6),(x+16),(y+6+12),color(0,0,0));//12
		_line_((x+17),(y+6),(x+17),(y+6+12),color(0,0,0));//12
	}
	else if(mode==PRESS)
	{
		_line_((x+7),(y+7),(x+7),(y+7+12),color(0,0,0));//12
		_line_((x+8),(y+8),(x+8),(y+8+10),color(0,0,0));//10
		_line_((x+9),(y+9),(x+9),(y+9+8),color(0,0,0));//8
		_line_((x+10),(y+10),(x+10),(y+10+6),color(0,0,0));//6
		_line_((x+11),(y+11),(x+11),(y+11+4),color(0,0,0));//4
		_line_((x+12),(y+12),(x+12),(y+12+2),color(0,0,0));//2
		_line_((x+13),(y+7),(x+13),(y+6+13),color(0,0,0));//12
		_line_((x+14),(y+7),(x+14),(y+6+13),color(0,0,0));//12
		_line_((x+17),(y+7),(x+17),(y+6+13),color(0,0,0));//12
		_line_((x+18),(y+7),(x+18),(y+6+13),color(0,0,0));//12
	}
	//可能不存在按钮不可用状态
/*	else if(mode==INVALID)
	{
		//阴影
		_line_((x+7),(y+7),(x+7),(y+7+12),color(255,255,255));//12
		_line_((x+8),(y+8),(x+8),(y+8+10),color(255,255,255));//10
		_line_((x+9),(y+9),(x+9),(y+9+8),color(255,255,255));//8
		_line_((x+10),(y+10),(x+10),(y+10+6),color(255,255,255));//6
		_line_((x+11),(y+11),(x+11),(y+11+4),color(255,255,255));//4
		_line_((x+12),(y+12),(x+12),(y+12+2),color(255,255,255));//2
		_line_((x+13),(y+7),(x+13),(y+6+13),color(255,255,255));//12
		_line_((x+14),(y+7),(x+14),(y+6+13),color(255,255,255));//12
		_line_((x+17),(y+7),(x+17),(y+6+13),color(255,255,255));//12
		_line_((x+18),(y+7),(x+18),(y+6+13),color(255,255,255));//12
		//正常
		_line_((x+6),(y+6),(x+6),(y+6+12),color(0x80,0x80,0x80));//12
		_line_((x+7),(y+7),(x+7),(y+7+10),color(0x80,0x80,0x80));//10
		_line_((x+8),(y+8),(x+8),(y+8+8),color(0x80,0x80,0x80));//8
		_line_((x+9),(y+9),(x+9),(y+9+6),color(0x80,0x80,0x80));//6
		_line_((x+10),(y+10),(x+10),(y+10+4),color(0x80,0x80,0x80));//4
		_line_((x+11),(y+11),(x+11),(y+11+2),color(0x80,0x80,0x80));//2
		_line_((x+12),(y+6),(x+12),(y+6+12),color(0x80,0x80,0x80));//12
		_line_((x+13),(y+6),(x+13),(y+6+12),color(0x80,0x80,0x80));//12
		_line_((x+16),(y+6),(x+16),(y+6+12),color(0x80,0x80,0x80));//12
		_line_((x+17),(y+6),(x+17),(y+6+12),color(0x80,0x80,0x80));//12
	}*/
}

//停止按钮
//固定高度24
void Button_Stop(u16 x,u16 y,u8 mode)
{
	Button(x,y,(x+24),(y+24),mode,"■",12,12);
}

//下一首
void Button_Next(u16 x,u16 y,u8 mode)
{
	Button(x,y,(x+24),(y+24),mode,NULL,0,0);
	if(mode==UNPRESS)
	{
		_line_((x+8),(y+6),(x+8),(y+6+12),color(0,0,0));//12
		_line_((x+9),(y+7),(x+9),(y+7+10),color(0,0,0));//10
		_line_((x+10),(y+8),(x+10),(y+8+8),color(0,0,0));//8
		_line_((x+11),(y+9),(x+11),(y+9+6),color(0,0,0));//6
		_line_((x+12),(y+10),(x+12),(y+10+4),color(0,0,0));//4
		_line_((x+13),(y+11),(x+13),(y+11+2),color(0,0,0));//2
		_line_((x+14),(y+6),(x+14),(y+6+12),color(0,0,0));//12
		_line_((x+15),(y+6),(x+15),(y+6+12),color(0,0,0));//12
	}
	else if(mode==PRESS)
	{
		_line_((x+9),(y+7),(x+9),(y+7+12),color(0,0,0));//12
		_line_((x+10),(y+8),(x+10),(y+8+10),color(0,0,0));//10
		_line_((x+11),(y+9),(x+11),(y+9+8),color(0,0,0));//8
		_line_((x+12),(y+10),(x+12),(y+10+6),color(0,0,0));//6
		_line_((x+13),(y+11),(x+13),(y+11+4),color(0,0,0));//4
		_line_((x+14),(y+12),(x+14),(y+12+2),color(0,0,0));//2
		_line_((x+15),(y+7),(x+15),(y+6+13),color(0,0,0));//12
		_line_((x+16),(y+7),(x+16),(y+6+13),color(0,0,0));//12
	}
}

//上一首
void Button_Pre(u16 x,u16 y,u8 mode)
{
	Button(x,y,(x+24),(y+24),mode,NULL,0,0);
	if(mode==UNPRESS)
	{
		_line_((x+15),(y+6),(x+15),(y+6+12),color(0,0,0));//12
		_line_((x+14),(y+7),(x+14),(y+7+10),color(0,0,0));//10
		_line_((x+13),(y+8),(x+13),(y+8+8),color(0,0,0));//8
		_line_((x+12),(y+9),(x+12),(y+9+6),color(0,0,0));//6
		_line_((x+11),(y+10),(x+11),(y+10+4),color(0,0,0));//4
		_line_((x+10),(y+11),(x+10),(y+11+2),color(0,0,0));//2
		_line_((x+9),(y+6),(x+9),(y+6+12),color(0,0,0));//12
		_line_((x+8),(y+6),(x+8),(y+6+12),color(0,0,0));//12
	}
	else if(mode==PRESS)
	{
		_line_((x+16),(y+7),(x+16),(y+7+12),color(0,0,0));//12
		_line_((x+15),(y+8),(x+15),(y+8+10),color(0,0,0));//10
		_line_((x+14),(y+9),(x+14),(y+9+8),color(0,0,0));//8
		_line_((x+13),(y+10),(x+13),(y+10+6),color(0,0,0));//6
		_line_((x+12),(y+11),(x+12),(y+11+4),color(0,0,0));//4
		_line_((x+11),(y+12),(x+11),(y+12+2),color(0,0,0));//2
		_line_((x+10),(y+7),(x+10),(y+6+13),color(0,0,0));//12
		_line_((x+9),(y+7),(x+9),(y+6+13),color(0,0,0));//12
	}
}

//画笔按钮
//type:画笔类型(目前共8种)
void Button_Draw(u16 x,u16 y,u8 mode,u8 type)
{
	u8 x1,y1;
	Button(x,y,(x+24),(y+24),mode,NULL,0,0);
	switch(type)
	{
		case 0:
		{
			if(mode==UNPRESS)dot((x+12),(y+12),0);
			if(mode==PRESS)dot((x+13),(y+13),0);
		}break;
		case 1:
		{
			if(mode==UNPRESS)clear((x+10),(y+10),(x+24-10),(y+24-10),0);
			if(mode==PRESS)clear((x+11),(y+11),(x+24-10+1),(y+24-10+1),0);
		}break;
		case 2:
		{
			if(mode==UNPRESS)clear((x+8),(y+8),(x+24-8),(y+24-8),0);
			if(mode==PRESS)clear((x+9),(y+9),(x+24-8+1),(y+24-8+1),0);
		}break;
		case 3:
		{
			if(mode==UNPRESS)clear((x+6),(y+6),(x+24-6),(y+24-6),0);
			if(mode==PRESS)clear((x+7),(y+7),(x+24-6+1),(y+24-6+1),0);
		}break;
		case 4:
		{
			if(mode==UNPRESS)
			{
				for(y1=0;y1<12;y1+=5)
				{
					for(x1=0;x1<12;x1+=5)dot((x+6+x1),(y+6+y1),0);
				}
			}
			if(mode==PRESS)
			{
				for(y1=0;y1<12;y1+=5)
				{
					for(x1=0;x1<12;x1+=5)dot((x+6+x1+1),(y+6+y1+1),0);
				}
			}
		}break;
		case 5:
		{
			if(mode==UNPRESS)
			{
				for(y1=0;y1<12;y1+=4)
				{
					for(x1=0;x1<12;x1+=4)dot((x+6+x1),(y+6+y1),0);
				}
			}
			if(mode==PRESS)
			{
				for(y1=0;y1<12;y1+=4)
				{
					for(x1=0;x1<12;x1+=4)dot((x+6+x1+1),(y+6+y1+1),0);
				}
			}
		}break;
		case 6:
		{
			if(mode==UNPRESS)
			{
				for(y1=0;y1<12;y1+=3)
				{
					for(x1=0;x1<12;x1+=3)dot((x+6+x1),(y+6+y1),0);
				}
			}
			if(mode==PRESS)
			{
				for(y1=0;y1<12;y1+=3)
				{
					for(x1=0;x1<12;x1+=3)dot((x+6+x1+1),(y+6+y1+1),0);
				}
			}
		}break;
		case 7:
		{
			if(mode==UNPRESS)
			{
				for(y1=0;y1<12;y1+=2)
				{
					for(x1=0;x1<12;x1+=2)dot((x+6+x1),(y+6+y1),0);
				}
			}
			if(mode==PRESS)
			{
				for(y1=0;y1<12;y1+=2)
				{
					for(x1=0;x1<12;x1+=2)dot((x+6+x1+1),(y+6+y1+1),0);
				}
			}
		}break;
	}
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表