计算机图形学实用技术(画图作品)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程名称:《计算机图形学实用技术》班别:XXX

授课老师:XXX

学号:XXX

姓名:XXX

完成时间:2010年11月15日

一、实验名称:直线、矩形、圆、椭圆绘图操作的实现

二、实现功能:通过指针来绘出直线,矩形、圆、椭圆的形状大小及对其填充颜色

三、代码的实现:

1、在消息处理函数中的主要代码:

void CDarwView::OnLButtonDown(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

m_prigin=m_ptOld=point; m_bDraw=TRUE;

m_Drag=1;

CClientDC dc(this);

OnPrepareDC(&dc);

dc.DPtoLP(&point);

m_prigin=point;

dc.SelectStockObject(NULL_BRUSH);

SetCursor(m_HCursor);

CScrollView::OnLButtonDown(nFlags, point);

}

void CDarwView::OnOptionsColor()

{

// TODO: Add your command handler code here

CColorDialog ColorDialog;

if(ColorDialog.DoModal()==IDOK)

m_pColor=ColorDialog.GetColor();

m_FFlag=0;

}

void CDarwView::OnOptionsFillcolor()

{

// TODO: Add your command handler code here

CColorDialog ColorDialog;

if(ColorDialog.DoModal()==IDOK)

m_fColor=ColorDialog.GetColor();

m_FFlag=1;

}

2、实现各个图形主要代码:

1)、画直线

void CDarwView::OnLButtonUp(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

m_Drag=0;

if(CurrentDraw==DRAW_VCLINE)

{

CDC *pDC=GetDC();

CPen mypen,*oldpen;

mypen.CreatePen(PS_SOLID,1,m_pColor);

oldpen=pDC->SelectObject(&mypen);

pDC->MoveTo(m_prigin);

pDC->LineTo(point);

ReleaseDC(pDC);

mypen.DeleteObject();

}

m_bDraw=FALSE;

CView::OnLButtonUp(nFlags, point);

}

2)、画矩形、圆、椭圆

void CDarwView::OnMouseMove(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

CClientDC dc(this);

OnPrepareDC(&dc);

dc.DPtoLP(&point);

dc.SelectStockObject(NULL_BRUSH);

SetCursor(m_HCursor);

if(m_Drag)

{

CDarwDoc *pDoc=GetDocument();

CPen NewPen,*pOldPen;

NewPen.CreatePen(m_pStyle,m_pWidth,m_pColor);

pOldPen=dc.SelectObject(&NewPen);

CBrush NewBrush,*pOldBrush;

if(m_FFlag)

{

if(m_HFlag==0)

NewBrush.CreateSolidBrush(RGB(255,255,255));

else

NewBrush.CreateSolidBrush(m_fColor);

pOldBrush=dc.SelectObject(&NewBrush);

}

dc.SetROP2(10);

if(CurrentDraw==DRAW_RECTANGLE)

{

dc.Rectangle(m_prigin.x,m_prigin.y,m_ptOld.x,m_ptOld.y);

dc.Rectangle(m_prigin.x,m_prigin.y,point.x,point.y);

}

if(CurrentDraw==DRAW_VCCIRCLE)

{

相关文档
最新文档