编程画线(VB或C)

来源:百度知道 编辑:UC知道 时间:2024/05/28 22:13:08
用DDA,Bresenham方法画线``起点终点由鼠标输入(用TC编的话就可以自己指定起点终点)
多边形逼近圆:用户输入误差,程序算出所需边数

前几个礼拜刚做过这样一个题目:
下面的算法我是用VC做的

void CHuatuView::Online()
{
// TODO: Add your command handler code here
HDC hdc;
hdc=::GetDC(m_hWnd);//DC是设备描述表,加载设备驱动
hx.DoModal();
x0=hx.m_x0;
x1=hx.m_x1;
y0=hx.m_y0;
y1=hx.m_y1;
x0=x0+511;
x1=x1+511;
y0=-y0+383;
y1=-y1+383;

if(x0==x1)
{int x=x0;
if(y0>y1)
{int s=y0;
y0=y1;;
y1=s;}
for(int y=y0;y<=y1;y++)
{
::SetPixel(hdc,x,y,255);
}
}

else
{
int dx,dy;
float k;
dx=x1-x0;
dy=y1-y0;
k=float(dy/dx);
if(k<=1&&k>=-1)
{
if(x0>x1)
{int s=x0;x0=x1;x1=s;s=y0;y0=y1;y1=s;}
int x;
float y=float(y0);
for(x=x0;x<=x1;x++)
{
::SetPixel(hdc,x,int(y+0.5),255);
y=y+k;
}
}
if(k>1||k<-1)
{
if(y0>y1)
{int s=y0;y0