- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
windows编程,交互式画图··精选
面向对象编程技术
综合实验一实验报告
班 级:通信一班
学 号:200800800095
姓 名: 李辉
版本号:1
时 间:2010-12-05
目 录
1 实验要求 1
2 实验过程及结果 1
2.1 创建工程 1
2.2 程序流程和数据模型分析 1
2.3 问题及解决方案 9
3 实验总结 9
附录 关键代码 10
实验要求
交互式绘制图形(至少包括线、矩形和文本),绘制完成的图形能够正确地重现
绘制结果可以正确持久化(存储到文件、从文件中读出)
最终交付的工程中至少包含两个源文件
高级要求
线、矩形、文本的颜色(线色和填充色)、文本字体可调。
能够通过鼠标点击选中图形,并进行属性的修改,修改的内容可包括:
位置
大小
颜色
线型
实验过程及结果
创建工程
在工程里,除创建了资源的头文件,又另外定义了一个头文件,来存放各个结构体或者是其他文件的声明;
定义了两个cpp文件,一个cpp文件存放主程序,另一个文件存放其他子函数,比如:对话框的定义函数,画图子函数等。
程序流程和数据模型分析
已实现功能:
画线,矩形,椭圆,输入文本,保存,打开
高级功能
由于时间关系
对矩形实现了图形的移动
对椭圆实现了图形的放大缩小
对文本,可以改变颜色和字体
定义了三种画笔,四种画刷
以画线为例:
根据选择的图像类型,将相应的数据存入结构体里
lines[Count.lcount].Lines.x=LOWORD(lParam);
lines[Count.lcount].Lines.y=HIWORD(lParam);
另外定义另外一个结构体来记录相应图形画的个数
typedef struct count
{
int lcount;
int rcount;
int ecount;
int tcount;
}COUNT;
(这个结构体在画图和打开文件再做修改时很重要)
保存文件:
WriteFile (hFile, Count, sizeof(COUNT),
dwBytes, NULL);
WriteFile (hFile, lines, sizeof(MYLINES)*Count.lcount,
dwBytes, NULL);
(必须将计图形个数的结构体最先写入文件,在读文件的时候需要用到)
读文件:
ReadFile (hFile, Count, sizeof(COUNT),
dwBytes, NULL);
ReadFile (hFile, lines, sizeof(MYLINES)*Count.lcount,
dwBytes, NULL);
(先写入的文件,先读,由于先读入线的个数,故可以来确定读线时所需要的空间)
调用另存为对话框:
在wm_creat里初始定义
设置对话框结构变量ofn
调用另存为对话框GetSaveFileName (ofn)
文件的打开对话框:
设置对话框结构变量ofn
调用打开对话框
GetOpenFileName (ofn)
调用是否需要保存对话框的逻辑:
当文件已做修改未保存,再执行打开其他文件或者是关闭程序时,调用询问对话框。若需保存则SendMessage (hWnd, WM_COMMAND, IDM_FILE_SAVE, 0),当文件名不为“无标题”时执行保存操作,否则执行“另存为”命令。
利用bFileChange来确定文件是否改变。
添加画笔画刷
1画笔的定义
typedef struct tagmylines
{
POINT Lines;
POINT Linee;
COLORREF color;
int penWidth;
int penStyle;
}MYLINES;
根据选择的画笔的类型,将相应的函数传到结构体里
if(iSelectionPen==IDM_PEN_BLACK)
{
ellipse[Count.ecount].penStyle=PS_SOLID;
ellipse[Count.ecount].penWidth=1;
ellipse[Count.ecount].color=RGB(0,0,0);
};
2.画刷的定义
将画刷的类型写入结构体,在画图的子函数里再根据画刷的类型选择相应的画刷来绘图
文本的添加
点击左键,获得坐标,在该点输出文本。
文本的输入通过激活对话框。文本可以改变颜色。
g_Color=GetMyColor(hWnd)
写入当前的坐标
texts[Count.tcount].Texts.x=LOWORD(lParam);
您可能关注的文档
最近下载
- 【社会层面】社会主义核心价值观.ppt VIP
- 回话有招高情商回话术书本.doc VIP
- 【社会层面】社会主义核心价值观精品课件.ppt VIP
- 沪教8AUnit6Ancientstories more practice-The story of 100,000 arrows 公开课优质课教案教学设计.doc
- 小学《科学》新教材培训研讨会:技术与工程领域总体介绍.pptx
- 2024年中考英语复习 并列复合句 讲义学案(解析版).pdf VIP
- 血常规结果解释ppt课件.pptx VIP
- 第16课 课件 2022-2023学年高中新经典日本语基础教程第二册.pptx VIP
- 软件工程专业生涯发展展示.pptx
- 成人脑室外引流护理——中华护理学会团体标准解读.pptx
文档评论(0)