求教一个底层的问题

hy1080 2004-11-29 09:55:42
用写点的办法画一条任意直线
最好有源码有讲一下具体过程
写点函数可以用任意环境的写点函数,
偶主要是这个算法
用C完成
解决后再送100分
...全文
115 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hy1080 2004-12-02
  • 打赏
  • 举报
回复
对了,还得说一句这个函数在粗线下会出点小问题,
所以最好给一个单线条的,直线和虚线的函数。
成功后定送100分,最近赖,不想分析程序,谢谢
hy1080 2004-12-02
  • 打赏
  • 举报
回复
to handwolf(初学者)
那要是画虚线呢?
真接给个函数吧
handwolf 2004-11-29
  • 打赏
  • 举报
回复
Bresenham直线的绘画算法,网上很多,你可以多搜索,还有一个dda算法的!
handwolf 2004-11-29
  • 打赏
  • 举报
回复
上面的程序,算法是不变的,应该很容易改成你需要的!
hy1080 2004-11-29
  • 打赏
  • 举报
回复
我在嵌入式系统里面用,所但可以把TC里的画点函数给转化成
嵌入式里的函数。有人作了一份说是有误差所以我就在里,请教一下。谢谢了:)
handwolf 2004-11-29
  • 打赏
  • 举报
回复
如果是win32程序;我刚给你写了一个!
///////////////////////////////////////////////////////BresenhamLine
//功能--绘画线条
//hDC--绘图设备句柄
//ptStart--线段起点
//ptEnd--线段终点
//color--线条颜色
//npenWidth--线条宽度
//author--handwolf
//create time--2004.11.29
//////////////////////////////////////////////////////
void BresenhamLine(HDC hDC,POINT ptStart,POINT ptEnd,COLORREF color,int npenWidth)
{
int x1=ptStart.x,y1=ptStart.y,
x2=ptEnd.x,y2=ptEnd.y;
int i,dx,dy,di,const1,const2,inc,tmp;
inc=1;
dx=x2-x1;
dy=y2-y1;
if(fabs(dx)>fabs(dy))
{
if(dx<0)
{
tmp=x1;x1=x2;x2=tmp;
tmp=y1;y1=y2;y2=tmp;
dx=-dx;dy=-dy;
}
if(dy<0)
{
inc=-1;
dy=-dy;
}
di=2*dy-dx;
const1=2*(dy-dx);
const2=2*dy;
for(i=0;i<npenWidth;i++)
{
SetPixel(hDC,x1+i,y1,color);
SetPixel(hDC,x1,y1+i,color);
}
while(x1<x2)
{
x1++;
if(di>=0)
{
y1+=inc;
di+=const1;
}
else
{
di+=const2;
}
for(i=0;i<npenWidth;i++)
{
SetPixel(hDC,x1+i,y1,color);
SetPixel(hDC,x1,y1+i,color);
}
}
}
else
{
if(dy<0)
{
tmp=x1;x1=x2;x2=tmp;
tmp=y1;y1=y2;y2=tmp;
dx=-dx;dy=-dy;
}
if(dx<0)
{
inc=-1;
dx=-dx;
}
di=2*dx-dy;
const1=2*(dx-dy);
const2=2*dx;
for(i=0;i<npenWidth;i++)
{
SetPixel(hDC,x1+i,y1,color);
SetPixel(hDC,x1,y1+i,color);
}
while(y1<y2)
{
y1++;
if(di>=0)
{
x1+=inc;
di+=const1;
}
else
{
di+=const2;
}
for(i=0;i<npenWidth;i++)
{
SetPixel(hDC,x1+i,y1,color);
SetPixel(hDC,x1,y1+i,color);
}
}
}
}
handwolf 2004-11-29
  • 打赏
  • 举报
回复
楼主是打算在哪里用呢?
是tc下吗?
晨星 2004-11-29
  • 打赏
  • 举报
回复
清华大学出版社《计算机图形学》上面有。

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧