管理员
最后登录1970-1-1
在线时间 小时
注册时间2013-5-3
|
发表于 2014-5-5 18:18:09
|
显示全部楼层
尚文博 发表于 2014-5-5 17:27
能具体点吗?新手刚学
- /******************************************************
- * 函数名:LCD_Line
- * 描述 :在指定两点之间画直线
- * 输入 : -x1 横向起点 0~319
- -y1 纵向起点 0~239
- -x2 横向终点 0~319
- -y2 纵向终点 0~239
- * 输出 :无
- * 举例 : LCD_Line(10,10, 319, 239);
- LCD_Line(10,10, 100, 150);
- LCD_Line(100, 150,10,10 );
- * 注意 : 已测试
- *********************************************************/
- void LCD_Line(u16 x1, u16 y1, u16 x2, u16 y2)
- {
- u16 x, y, t;
- Set_direction(0);
- if( (x1 == x2) && (y1 == y2) )
- LCD_Point(x1, y1);
- else if( abs(y2 - y1) > abs(x2 - x1) ) /*斜率大于1*/
- {
- if(y1 > y2)
- {
- t = y1;
- y1 = y2;
- y2 = t;
- t = x1;
- x1 = x2;
- x2 = t;
- }
- for(y=y1; y<y2; y++) /*以y轴为基准*/
- {
- x = (u32)(y-y1)*(x2-x1) / (y2-y1) + x1;
- LCD_Point(x, y);
- }
- }
- else /*斜率小于等于1*/
- {
- if(x1 > x2)
- {
- t = y1;
- y1 = y2;
- y2 = t;
- t = x1;
- x1 = x2;
- x2 = t;
- }
- for(x=x1; x<x2; x++) /*以x轴为基准*/
- {
- y = (u32)(x-x1)*(y2-y1) / (x2-x1) + y1;
- LCD_Point(x, y);
- }
- }
- }
复制代码 这是野火旧版的液晶程序,里面有这个函数,可以参考一下 |
|