C++笔记:绘图控制
来源:优易学  2011-12-21 18:15:10   【优易学:中国教育考试门户网】   资料下载   IT书店

  在软件的运行过程中,用户可以根据软件提供的设置对话框,颜色对话框和字体对话框等用户接口来对软件进行制定。本章主要介绍对图形绘制的制定,此外,也介绍了如何获取对话框的返回值。

  10.1获取一个对话框的返回值

  创建一个Setting对话框,在View类中添加Commad消息响应函数。然后再Setting对话框类中添加一个public变量m_nWidth。

  在View中添加一个变量m_nWidth1,然后就可以设置和获取对话框的变量值了。

  01 //#include "SettingDlg.h"

  02 void CGraphicView::OnSetting()

  03 {

  04     // TODO: Add your command handler code here

  05     CSettingDlg dlg;

  06     dlg.m_nWidth=m_nWidth1;

  07     if(IDOK==dlg.DoModal())

  08     {

  09         m_nWidth1=dlg.m_nWidth;

  10     }

  11 }

  10.2获取颜色对话框的值

  MFC为我们提供了一个颜色对话框类CColorDialog,可以在View类中直接创建该类对象。为了设置和获取颜色对话框的RGB默认值,需要在View类中建一个COLORREF类型变量。

  01 void CGraphicView::OnColor()

  02 {

  03     // TODO: Add your command handler code here

  04     CColorDialog dlg;

  05     dlg.m_cc.rgbResult=m_ccr;// m_cc为一个COLORREF变量

  06     dlg.m_cc.Flags|=CC_RGBINIT;

  07     if(IDOK==dlg.DoModal())

  08     {

  09         m_ccr=dlg.m_cc.rgbResult;

  10     }

  11 }

  10.3获取字体对话框的值

  MFC同样为我们提供了一个字体对话框类CFontDialog,可以在View类中直接创建该类对象。为了获取字体对话框的值,需要在View类中建一个CFont类型变量。

  01 void CGraphicView::OnFont()

  02 {

  03     // TODO: Add your command handler code here

  04     CFontDialog dlg;

  05     if(IDOK==dlg.DoModal())

  06     {

  07         // m_font为一个CFont变量

  08         if(m_font.m_hObject)// 判断m_font是否已经和某个字体资源相关联了

  09             m_font.DeleteObject();//如果已经关联,删除关联资源

  10         m_font.CreateFontIndirect(dlg.m_cf.lpLogFont);

  11         m_strFontName=dlg.m_cf.lpLogFont->lfFaceName;

  12     }

  13 }

  10.4绘图

  设置绘图的一些参数之后,便可以开始实现绘图。将设置的一些参数选择到画笔,并完成相应的图像绘制。

  01 void CGraphicView::OnLButtonUp(UINT nFlags, CPoint point)

  02 {

  03    CClientDC dc(this);

  04    CPen pen(m_nLineStyle,m_nWidth,m_ccr);

  05    dc.SelectObject(&pen);

  06    CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));//透明画刷

  07    dc.SelectObject(pBrush);

  08    //画点

  09    dc.SetPixel(point,m_ccr);

  10    //画线

  11    dc.MoveTo(m_pOrigin);

  12    dc.LineTo(point);

  13    //画矩形

  14    dc.Rectangle(CRect(m_pOrigin,point));

  15     //画椭圆

  16    dc.Ellipse(CRect(m_pOrigin,point));

  17 }

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训