windows程,交互式画图··.docVIP

  • 9
  • 0
  • 约1.45万字
  • 约 20页
  • 2017-05-15 发布于贵州
  • 举报
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(hW

文档评论(0)

1亿VIP精品文档

相关文档