实现控制台点击鼠标左键两下画直线,和固定长为半径鼠标左击为圆心画圆。
Bresenham画直线,斜率有四种情况。
void Cdraw_lineView::Bresenhamline(int x0, int y0, int x1, int y1, int color) //自写函数,两次点击画直线
{
CDC *pDC = GetDC();
int x, y, dx, dy, e;
dx = x1 - x0;
dy = y1 - y0;
e = -dx;
x = x0;
y = y0;
if ((dx >= 0 && dy >= 0) || (dx <= 0 && dy <= 0)) //k>0
{
if ((dx < 0) || (dx == 0 && dy < 0)) ///dx小于0说明终点x
{
dx = -dx;
x = x1;
dy = -dy;
y = y1;
}
if (dy < dx) //第一种情况,k-(0,1)//
{
e = -dx;
for (int i = 0; i < dx; i++)
{
pDC->SetPixel(x, y, color);
x++;
e = e + dy + dy;
if (e >= 0)
{
y++;
e = e - dx - dx;
}
}
}
else //第二种情况,k-(1,max)
{
e = -dy;
for (int i = 0; i < dy; i++)
{
pDC->SetPixel(x,