- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
windows编程,交互式画图··22
面向对象编程技术
综合实验一实验报告
班 级:通信一班
学 号: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);
您可能关注的文档
最近下载
- 新款GC9790II型色谱仪说明书.pdf VIP
- 2025山东省环保发展集团有限公司业务中心及双碳业务板块招聘笔试模拟试题及答案解析.docx VIP
- 标准图集-04G101-3 筏形基础.PDF VIP
- (高清版)B-T 4798.3-2023 环境条件分类 环境参数组分类及其严酷程度分级 第3部分:有气候防护场所固定使用.pdf VIP
- 高中英语教学竞赛公开课、高考复习课件——2025年高考新课标一卷读后续写详析及参考范文专项课件.pptx VIP
- 安装工培训课件.pptx VIP
- 西安航空学院辅导员招聘考试备考真题题库汇编.pdf VIP
- 《蒸汽管道竣工全套资料表格》.docx VIP
- 《油气储存企业安全风险评估细则(2025年修订版)》解读与培训.pptx VIP
- 上海市交通大学附属中学2021届高三9月开学考试英语试题.docx VIP
文档评论(0)