- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VS2010MFC编程入门之五十(图形图像:GDI对象之画笔CPen)
理解了CDC类及其屏幕绘图函数,这里主要内容是GDI对象之画笔CPen。
GDI对象
在MFC中,CGdiObject类是GDI对象的基类,通过查阅MSDN我们可以看到,CGdiObject类有六个直接的派生类,GDI对象主要也是这六个,分别是:CBitmap、CBrush、CFont、CPalette、CPen和CRgn。
在这六个GDI对象中,最常用的莫过于画笔和画刷了,即CPen类和CBrush类。本文就主要讲解画笔的使用。
画笔的应用实例
在这里直接通过一个波形图的实例,来详细讲解画笔的使用方法。
首先介绍此实例要实现的功能:在对话框上有一个Picture控件,将此控件的背景填充为黑色;启动一个定时器,每次定时器到时,所有波形数据都前移一个单位,并获取一个80以内的随机数作为波形的最后一个数据,然后以绿色画笔在绘图控件上绘制波形。这样就实现了波形的绘制及动态变化。
下面是具体实施步骤:
1、创建一个基于对话框的MFC工程,名字设为“Example50”。
2、在自动生成的对话框模板IDD_EXAMPLE50_DIALOG中,删除“TODO: Place dialog controls here.”静态文本框,添加一个Picture控件,ID设为IDC_WAVE_DRAW。
3、为Picture控件IDC_WAVE_DRAW添加CStatic变量,名称设为m_picDraw。
4、在文件Example50Dlg.h文件中CExample50Dlg类声明的上面添加宏定义:
C++代码
#define POINT_COUNT 100
此符号常量的意义是波形的点数,这里用define将其定义为符号常量是为了方便以后可能的修改,假如我们以后想将点数改为200,则只改此宏定义就可以了:#define POINT_COUNT 200,而如果没有使用符号常量,在程序中直接使用了100,那么就需要将所有使用100的位置找出来,并替换为200,这样不仅麻烦也很容易出错,所以最好是将其定义为符号常量。
5、在CExample50Dlg.h文件中为CExample50Dlg类添加成员数组:
C++代码
int m_nzValues[POINT_COUNT];
此数组用于存放波形数据。
6、在CExample50Dlg类的构造函数中为数组m_nzValues的元素赋初值:
C++代码
CExample50Dlg::CExample50Dlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CExample50Dlg::IDD, pParent)
{
m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);
// 将数组m_nzValues的元素都初始化为0
memset(m_nzValues, 0, sizeof(int) * POINT_COUNT);
}
7、在CExample50Dlg对话框的初始化成员函数CExample50Dlg::OnInitDialog()中,构造随机数生成器,并启动定时器。CExample50Dlg::OnInitDialog()修改如下:
C++代码
BOOL CExample50Dlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// Add About... menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.L
您可能关注的文档
- 006天正建筑绘图教程.ppt
- 02.桩基工程管控要点.docx
- 02SQLServer2008的运行环境详解.ppt
- 01-人体测量学与人体尺寸.ppt
- 03 微视频课件制作流程及要领.pptx
- 03级自控-答案.docx
- 08编制规定与2018编制规定变化要点解读.docx
- 02路基土的特性及设计参数-演讲版.ppt
- 0认识市场营销(精).ppt
- (最新)创新社会治理.ppt
- 2025年全国保密教育线上培训考试题库高频重点提升试题附答案详解【夺分金卷】.docx
- 全国保密教育线上培训考试全真模拟模拟题及参考答案详解(培优b卷).docx
- 2025年全国保密教育线上培训考试题库高频重点提升试题及参考答案详解(考试直接用).docx
- 2025年全国保密教育线上培训考试题库必背题附完整答案详解(全国通用).docx
- 2025年全国保密教育线上培训考试题库高频重点提升试题含答案详解(a卷).docx
- 2025年押题宝典全国保密教育线上培训考试题库及完整答案详解【必刷】.docx
- 2025年全国保密教育线上培训考试题库含答案详解【培优b卷】.docx
- 全国保密教育线上培训考试强化训练模考卷及答案详解(考点梳理).docx
- 全国保密教育线上培训考试【考点精练】附答案详解.docx
- 2025年全国保密教育线上培训考试题库必背题及参考答案详解(完整版).docx
最近下载
- 专题08 名著阅读(两部名著)-【好题汇编】备战2023-2024学年八年级语文上学期期末真题分类汇编(江苏专用)(解析版).docx VIP
- 数据库管理与开发项目教程杨云课后参考答案.docx VIP
- 智能机器人系统:智能机器人SLAMPPT教学课件.pptx VIP
- 土木工程施工方案.docx VIP
- GB_T 9711-2023石油天然气工业 管线输送系统用钢管.doc VIP
- 大学“十五五”时期党的建设专项规划.docx VIP
- 《中医入门,秦伯未著.doc VIP
- 2024小红书餐饮行业方法论报告.pdf
- 专题02 名句默写(四大题型)-【好题汇编】备战2023-2024学年八年级语文上学期期末真题分类汇编(江苏专用)(原卷版).docx VIP
- 第四章平面问题的极坐标解答作业点评1演示文稿.pdf VIP
原创力文档


文档评论(0)