/* 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 30 浏览量
2008-12-18
08:55:23
上传
评论 2
收藏 861B RAR 举报
liuhejmu
- 粉丝: 0
- 资源: 3
最新资源
- 流程图转PAD-N-S图和伪码(软件工程).doc
- C#winform excel导入导出
- 毕业论文上传111111111111
- raisin.zip
- 322个地级市-市场分割指数、市场一体化指数+居民消费价格指数(2004-2022年).txt
- 《基于Java实现自定义控件-天气温度折线图 》+源代码+设计资料
- 希尔伯特矩阵来综合演示数值矩阵与符号矩阵的基本操作
- 《基于51单片机和DS18B20的温度检测和报警系统,可设置报警温度上下限,输出温度采用数码管显示 》+源代码+设计资料
- ESP8266WIFI系统工作原理图.schdoc
- C语言《基于STM32的测量温度与压力的数据处理设计 》+源代码+设计资料
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
前往页