/* WIN-TC BGI 图形编程模板 */
#include "Conio.h"
#include "graphics.h"
#define closegr closegraph
void initgr(void) /* BGI初始化 */
{
int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同样效果 */
registerbgidriver(EGAVGA_driver);/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */
initgraph(&gd, &gm, "");
}
void Bresenham(int x0,int y0,int x1,int y1,int color)
{
int x,y,dx,dy,e,i;
double k;
dx=x1>x0?x1-x0:x0-x1;
dy=y1>y0?y1-y0:y0-y1;
if(dy==0)
{
x=x0>x1?x1:x0;
y=y1;
for(i=0;i<=dx;i++)
{
putpixel(x,y,color);
x=x+1;
}
return;
}
else if(dx>=dy)
{
k=(x0-x1)*(y0-y1);
e=-dx;
x=x0>x1?x1:x0;
if(k>0)
y=y0>y1?y1:y0;
else y=y0>y1?y0:y1;
for(i=0;i<=dx;i++)
{
putpixel(x,y,color);
x=x+1;
e=e+2*dy;
if(e>=0)
{
y=k>0?y+1:y-1;
e=e-2*dx;
}
}
}
else
{
k=(x0-x1)*(y0-y1);
e=-dy;
y=y0>y1?y1:y0;
if(k>0)
x=x0>x1?x1:x0;
else x=x0>x1?x0:x1;
for(i=0;i<=dy;i++)
{
putpixel(x,y,color);
delay(10000);
y=y+1;
e=e+2*dx;
if(e>=0)
{
if(k>0)
x++;
else x--;
e=e-2*dy;
}
}
}
}
int main(void)
{
initgr(); /* BGI初始化 */
Bresenham(100,50,50,200,4);
getch();
line(100,50,50,200);
getch(); /* 暂停一下,看看前面绘图代码的运行结果 */
closegr(); /* 恢复TEXT屏幕模式 */
return 0;
}
C语言Bresenham算法完整画线
5星 · 超过95%的资源 需积分: 43 49 浏览量
2008-12-18
08:55:23
上传
评论 2
收藏 861B RAR 举报
liuhejmu
- 粉丝: 0
- 资源: 3
最新资源
- STM32单片机FPGA毕设电路原理论文报告一种基于单片机的节能断电保护电路设计
- STM32单片机FPGA毕设电路原理论文报告一种基于单片机的机床位移检测系统
- unity3D翻书插件
- STM32单片机FPGA毕设电路原理论文报告一种基于单片机的红外测控系统
- Date(1).cpp
- java基于ssm珠宝商城购物网站案例设计
- STM32单片机FPGA毕设电路原理论文报告一种基于单片机的灯光调光控制系统开发
- STM32单片机FPGA毕设电路原理论文报告一种基于单片机的超声测距系统的设计
- Visual Basic快速入门.md
- STM32单片机FPGA毕设电路原理论文报告一种基于单片机的半导体激光器电源控制系统的设计
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
前往页