void CMFCApplication1View::DDA_line(int B_x, int B_y, int E_x, int E_y, COLORREF col)
//获取鼠标点击时(起点)的参数B_x和B_y,鼠标抬起时(终点)的参数E_x和E_y,线的颜色col
{
CDC * pDC = GetDC();//建立一个用于图形显示的指针(不需要引用新的头文件,大家复制粘贴
即可)
pDC->TextOut(450, 18, _T("DDA画线法成功了!"));//在屏幕(450,18)的位置显示一个白色
底色的黑字:DDA画线法成功了!
float x, y, dx, dy, k, _k;//浮点型变量x,y,x增量,y增量,斜率,斜率倒数
float xm, ym;
dx = E_x - B_x;//算出增量
dy = E_y - B_y;
k = dy / dx;//得到斜率&其倒数
_k = dx / dy;
x = E_x; xm = B_x;//赋值
y = E_y; ym = B_y;
//下面是一个关于斜率的判断,来决定由谁增长的问题
if (abs(dx) > abs(dy))
{
if (B_x <= E_x){ x = B_x; xm = E_x; y = B_y; ym = E_y; }
for (x; x <= xm; x++)
{
pDC->SetPixel(x, (int)(y + 0.5), col);//在屏幕上画col颜色的像素点(像素点位
置只能用int型)
y = y + k;
}
}
else
{
if (B_y <= E_y){ x = B_x; xm = E_x; y = B_y; ym = E_y; }
for (y; y <= ym; y++)
{
pDC->SetPixel((int)(x + 0.5), y, col);
x = x + _k;
}
}
}
//中点画线法
void CMFCApplication1View::Mid_line(int B_x, int B_y, int E_x, int E_y, COLORREF col)
{
CDC * pDC = GetDC();
评论0