windows编程,交互式画图··精选.doc

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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);

文档评论(0)

tazhiq2 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档