Bresesnham算法绘制直线段
Bresenham算法的意义:高效的将图形光栅化。其计算过程中均采用加法运算,故大大减少了程序的开销。
- 绘制直线段(MFC中)
//传入参数:起点、终点,颜色
void CMy3_4View::Bresenham(CPoint p0, CPoint p1, COLORREF CLR)
{
//自定义二维坐标系
CDC *pDC = GetDC();
CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(rect.Width(), rect.Height());
pDC->SetViewportExt(rect.Width(), -rect.Height());
pDC->SetViewportOrg(rect.Width()/2, rect.Height()/2);
rect.OffsetRect(-rect.Width()/2, -rect.Height()/2);
//开始绘制
CPoint temp, p;
int dx=p1.x-p0.x;
int dy=p1.y-p0.y;
double k=dy*1.00/dx*1.00;//斜率
COLORREF clr=CLR;//直线颜色
//不同斜率分别讨论
if(dx==0)//垂线
{
if(dy<0)//七点在上方,调换
{