计 算 机 图 形 学
专 业:
班 级:
学 号:姓 名:实 验 报 告 信息与计算科学 1002班 10080602** *****
1. 实验目的
熟悉CDC 类的MoveTo ()和LineTo ()直线段绘制函数。
熟悉斜率-1
2. 问题分析
通过Cline 类来模拟CDC 类完成任意斜率的直线段绘制,同样提供MoveTo ()和 LineTo ()成员函数。
3. 实验步骤
(1)规定颜色的处理, 定义了CRGB 类.
(2)设计CLine 直线类.
(3)在直线类中创建MoveTo()和LineTo()成员函数.
4. 部分程序代码
#Line.h
class CLine
{
public:
CLine();
virtual ~CLine();
void MoveTo(double,double);
void LineTo(CDC* pDC,double,double,double);
public:
CPoint m_p1;
CPoint m_p2;
};
#Line.cpp
CLine::CLine()
{
}
CLine::~CLine()
{
}
void CLine::MoveTo(double x,double y)
{
m_p1=CPoint(x,y);
}
void CLine::LineTo(CDC* pDC,double x,double y,double k)
{
m_p2=CPoint(x,y);
CPoint p,t;
pDC->SetMapMode(MM_LOMETRIC);
pDC->SetViewportOrg(200,200);
double d;
if(k>=-1.0&&k
{
if(m_p1.x >m_p2.x )
{
t=m_p1;
m_p1=m_p2;
m_p2=t;
}
d=-0.5-k;
for(p=m_p1;p.x
{
pDC->SetPixel (p.x ,p.y ,RGB(0,0,255));
if(d>0)
{
p.y--;
d-=1+k;
}
else
{
d-=k;
}
}
}
}
void CTEXTView::OnDraw(CDC* pDC)
{
CTEXTDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CLine cline;
cline.MoveTo (-200,300);
cline.LineTo (pDC,200,-300,-0.3);
}
5. 程序效果图
6. 实验总结
本实验实现了一个类似于CDC 类的MoveTo ()函数和LineTo ()函数,用于绘制任意斜率的直线段,这次只是绘制固定斜率的直线段,但还是出现了很多问题,经过与同学的讨论解决了问题。
计 算 机 图 形 学
专 业:
班 级:
学 号:姓 名:实 验 报 告 信息与计算科学 1002班 10080602** *****
1. 实验目的
熟悉CDC 类的MoveTo ()和LineTo ()直线段绘制函数。
熟悉斜率-1
2. 问题分析
通过Cline 类来模拟CDC 类完成任意斜率的直线段绘制,同样提供MoveTo ()和 LineTo ()成员函数。
3. 实验步骤
(1)规定颜色的处理, 定义了CRGB 类.
(2)设计CLine 直线类.
(3)在直线类中创建MoveTo()和LineTo()成员函数.
4. 部分程序代码
#Line.h
class CLine
{
public:
CLine();
virtual ~CLine();
void MoveTo(double,double);
void LineTo(CDC* pDC,double,double,double);
public:
CPoint m_p1;
CPoint m_p2;
};
#Line.cpp
CLine::CLine()
{
}
CLine::~CLine()
{
}
void CLine::MoveTo(double x,double y)
{
m_p1=CPoint(x,y);
}
void CLine::LineTo(CDC* pDC,double x,double y,double k)
{
m_p2=CPoint(x,y);
CPoint p,t;
pDC->SetMapMode(MM_LOMETRIC);
pDC->SetViewportOrg(200,200);
double d;
if(k>=-1.0&&k
{
if(m_p1.x >m_p2.x )
{
t=m_p1;
m_p1=m_p2;
m_p2=t;
}
d=-0.5-k;
for(p=m_p1;p.x
{
pDC->SetPixel (p.x ,p.y ,RGB(0,0,255));
if(d>0)
{
p.y--;
d-=1+k;
}
else
{
d-=k;
}
}
}
}
void CTEXTView::OnDraw(CDC* pDC)
{
CTEXTDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CLine cline;
cline.MoveTo (-200,300);
cline.LineTo (pDC,200,-300,-0.3);
}
5. 程序效果图
6. 实验总结
本实验实现了一个类似于CDC 类的MoveTo ()函数和LineTo ()函数,用于绘制任意斜率的直线段,这次只是绘制固定斜率的直线段,但还是出现了很多问题,经过与同学的讨论解决了问题。