用Bresenham算法画直线(二)
来源:互联网 发布:淘宝进货哪里的好 编辑:程序博客网 时间:2024/06/05 17:16
//采用vc++6.0的MFC
void CGac1View::OnDraw(CDC* pDC)
{
CGac1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
int x1=9, y1=9, x2=99, y2=99, c=1;
int dx; int dy; int x; int y; int p; int const1; int const2;
int inc; int tmp;
dx=x2-x1; dy=y2-y1;
if (dx*dy>=0) /*准备x或y的单位递变值。*/
inc=1;
else
inc=-1;
if (abs(dx)>abs(dy)){
if(dx<0){
tmp=x1; /*将2a, 3a象限方向*/
x1=x2; /*的直线变换到1a, 4a*/
x2=tmp;
tmp=y1; /*象限方向去*/
y1=y2;
dx=-dy;
dy=-dy;
}
p=2*dy-dx;
const1=2*dy; /*注意此时误差的*/
const2=2*(dy-dy); /*变化参数取值. */
x=x1;
y=y1;
pDC->SetPixel(x, y, c);
while (x<x2){
x++;
if(p<0)
p+=const1;
else{
y+=inc;
p+=const2;
}
pDC->SetPixel(x, y, c);
}
}
else {
if (dy<0){
tmp=x1; /* 将3b, 4b象限方向的*/
x1=x2; /*直线变换到2b, 1b */
x2=tmp; /*象限方向去. */
tmp=y1;
y1=y2;
dx=-dy;
dy=-dy;
}
p=2*dx-dy; /*注意此时误差的*/
const1=2*dx; /*变化参数取值. */
const2=2*(dx-dy);
x=x1;
y=y1;
pDC->SetPixel(x, y, c);
while (y<y2){
y++;
if(p<0)
p+=const1;
else{
x+=inc;
p+=const2;
pDC->SetPixel(x, y, c);
}
}
}
}
- 用Bresenham算法画直线(二)
- bresenham 画直线算法
- Bresenham 画直线算法
- Bresenham算法画直线
- Bresenham算法画直线
- Bresenham算法画直线(Dev C++)
- Bresenham 算法 画直线(VC++)
- 图形学算法--Bresenham画直线
- Bresenham快速画直线算法
- Bresenham快速画直线算法
- Bresenham快速画直线算法
- LCD160160 Bresenham算法 画直线
- Bresenham快速画直线算法
- 应用Bresenham算法画直线。
- Bresenham快速画直线算法
- 画图板--用DDA算法和Bresenham算法画直线
- bresenham直线,画圆算法(附OpenGL代码)
- OpenGl中点Bresenham算法画直线
- 推荐一些国外安全书籍
- 最著名且最有用的CSS过滤器之一:* html
- 简单搭建MIPS交叉编译环境------新手推荐
- 面向对象基础术语
- tomcat6.0下log4j相对路径配置
- 用Bresenham算法画直线(二)
- Windows 7截图
- 无法停止USB设备通用卷的解决办法
- 动态网站制作指南
- asp中使用div方法!
- MicrosoftAjax.Function.js 中用call 和apply方法实现回调和委托的代码
- 如何设置SQl存储过程调用参数为空
- Asp+Sql 对数据库总结
- dns 服务器架设