📄 lcd12864.c
字号:
if(x0 > x1)
{
temp = x1;
x1 = x0;
x0 = temp;
}
do
{
DrawPoint(x0,y,color);
x0++;
}while(x1 >= x0);
}
/******************************************************************************
画垂直直线
垂直于x轴的直线
y0起点,y1终点
*******************************************************************************/
void DrawVerticalLine(unsigned char x,unsigned char y0,unsigned char y1,unsigned char color)
{
unsigned char temp;
if(y0 > y1)
{
temp = y1;
y1 = y0;
y0 = temp;
}
do
{
DrawPoint(x,y0,color);
y0++;
}while(y1 >= y0);
}
/******************************************************************************
画任意两点(x0,y0)和(x1,y1)之间的直线
(x0,y0)起点,(x1,y1)终点
变量说明:dx表示直线X轴的差值变量,dy表示直线y轴的差值变量
dx_sym表示x轴增长方向(-1为减值方向,+1为增值方向)
dy_sym表示y轴增长方向(-1为减值方向,+1为增值方向)
dx_x2表示dx * 2;dy_x2表示dy * 2(用于加快运算速度)
di表示决策变量
*******************************************************************************/
char DrawLine(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char color)
{
int dx,dy,dx_sym,dy_sym,dx_x2,dy_x2,di;
if(x0 == x1)
{
DrawVerticalLine(x0,y0,y1,1);
return 1;
}
if(y0 == y1)
{
DrawHorizontalLine(x0,x1,y0,1);
return 1;
}
dx = x1 - x0;
dy = y1 - y0;
if(dx > 0)
{
dx_sym = 1;
}
else
{ if(dx < 0)
{
dx_sym = -1;
}
else
{
DrawVerticalLine(x0,y0,y1,1);
return 1;
}
}
if(dy > 0)
{
dy_sym = 1;
}
else
{ if(dy < 0)
{
dy_sym = -1;
}
else
{
DrawHorizontalLine(x0,x1,y0,1);
return 1;
}
}
dx = dx * dx_sym;
dy = dy * dy_sym;
dx_x2 = dx * 2;
dy_x2 = dy * 2;
if(dx >= dy)
{
di = dy_x2 - dx;
while(x0 != x1)
{
DrawPoint(x0,y0,1);
x0 = x0 + dx_sym;
if(di < 0)
{
di += dy_x2;
}
else
{
di += dy_x2 - dx_x2;
y0 += dy_sym;
}
}
DrawPoint(x0,y0,1);
}
else
{
di = dx_x2 - dy;
while(y0 != y1)
{
DrawPoint(x0,y0,1);
y0 = y0 + dy_sym;
if(di < 0)
{
di = di + dx_x2;
}
else
{
di = di + dx_x2 - dy_x2;
x0 = x0 + dx_sym;
}
}
DrawPoint(x0,y0,1);
}
return 1;
}
/******************************************************************************
画填充矩形
(x0,y0)是矩形左上角端点,(x1,y1)是矩形右下角端点,
color = 1显示;color = 0不显示
*******************************************************************************/
char DrawFillRectangle(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char color)
{
unsigned char temp;
if(x0 > x1)
{
temp = x0;
x0 = x1;
x1 = temp;
}
if(y0 > y1)
{
temp = y0;
y0 = y1;
y1 = temp;
}
if(y0 == y1)
{
DrawHorizontalLine(x0,x1,y0,1);
return 0;
}
if(x0 == x1)
{
DrawVerticalLine(x0,y0,y1,1);
return 0;
}
while(y0 <= y1)
{
DrawHorizontalLine(x0,x1,y0,1);
y0++;
}
return 0;
}
/******************************************************************************
画填充正方形
参数说明:
x0:正方形左上角x坐标值
y0:正方形左上角y坐标值
width:正方形的宽
color = 1显示;color = 0不显示
*******************************************************************************/
char DrawFillSquare(unsigned char x0,unsigned char y0,unsigned char width,unsigned char color)
{
if(width == 0) return 0;
if((x0 + width) > 127) return 0;
if((y0 + width) > 63) return 0;
DrawFillRectangle(x0,y0,x0 + width,y0 + width,1);
return 0;
}
/******************************************************************************
画矩形
(x0,y0)是矩形左上角端点,(x1,y1)是矩形右下角端点,
color = 1显示;color = 0不显示
*******************************************************************************/
char DrawRectangle(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char color)
{
unsigned char temp;
if(x0 > x1)
{
temp = x0;
x0 = x1;
x1 = temp;
}
if(y0 > y1)
{
temp = y0;
y0 = y1;
y1 = temp;
}
if(y0 == y1)
{
DrawHorizontalLine(x0,x1,y0,1);
return 0;
}
if(x0 == x1)
{
DrawVerticalLine(x0,y0,y1,1);
return 0;
}
DrawHorizontalLine(x0,x1,y0,1);
DrawHorizontalLine(x0,x1,y1,1);
DrawVerticalLine(x0,y0,y1,1);
DrawVerticalLine(x1,y0,y1,1);
return 0;
}
/******************************************************************************
画正方形
参数说明:
x0:正方形左上角x坐标值
y0:正方形左上角y坐标值
width:正方形的宽
color = 1显示;color = 0不显示
*******************************************************************************/
char DrawSquare(unsigned char x0,unsigned char y0,unsigned char width,unsigned char color)
{
if(width == 0) return 0;
if((x0 + width) > 127) return 0;
if((y0 + width) > 63) return 0;
DrawRectangle(x0,y0,x0 + width,y0 + width,1);
return 0;
}
/******************************************************************************
画方圆
参数说明:
(x0,y0)为圆心坐标,r为圆的半径;
color = 1显示;color = 0不显示
*******************************************************************************/
char DrawCircle(unsigned char x0,unsigned char y0,unsigned char r,unsigned char color)
{
char a,b;
int di;
if(r > 31 || r == 0) return 0;
a = 0;
b = r;
di = 3 - 2 * r;
while(a <= b)
{
DrawPoint(x0 - b,y0 - a,1);
DrawPoint(x0 + b,y0 - a,1);
DrawPoint(x0 - a,y0 + b,1);
DrawPoint(x0 - b,y0 - a,1);
DrawPoint(x0 - a,y0 - b,1);
DrawPoint(x0 + b,y0 + a,1);
DrawPoint(x0 + a,y0 - b,1);
DrawPoint(x0 + a,y0 + b,1);
DrawPoint(x0 - b,y0 + a,1);
a++;
if(di < 0)
{
di += 4 * a + 6;
}
else
{
di += 10 + 4 * (a - b);
b--;
}
DrawPoint(x0 + a,y0 + b,1);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -