关于GDI+ 多边形绘制功能的数据结构问题

VergilYe 2018-04-03 09:59:02
前段时间制作了一个多边形绘制的功能:
1.用CPtrArray储存每个点
2.左键点击,CPtrArray.Add一个点.
3.每个点都可以单独拖动.
4.整个多边形可以单独拖动
5.将一组PointF插入进CPtrArray(用的Add函数一个一个加),并绘制

上述是我这个功能的大概需求.

1-4点用CPtrArray都可以满足,
但是在实现第5点的时候,就发现用CPtrArray.Add函数效率超低(一次性添加5000个以上的坐标,至少需要1秒),可是我的需求是10ms以下.


经过一番百度,我发现GraphicsPath的AddLines可以满足我的第5点需求.
但是却没有找到方法满足3-4的需求.
我曾经使用过如下方法,但是绘制出来的图形却没有更新
PathData* pPathData = new PathData();
m_GdiPath.GetPathData(pPathData);
pPathData->Points[0].X = 0;
pPathData->Points[0].Y = 0;
请问一下,GraphicsPath是否有修改某一个坐标的功能,并更新绘制内容?

如果没有的话,那么我应该怎么设计才能满足我的5点需求?
先谢过各位了!
...全文
615 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
VergilYe 2018-04-11
  • 打赏
  • 举报
回复
引用 5 楼 schlafenhamster 的回复:
PointF *m_ptPolygon 类型问题 ?
已经解决了. 方式如下: 1.重载结构体的拷贝结构函数 2.重载结构体的"="运算符 结贴了.
schlafenhamster 2018-04-04
  • 打赏
  • 举报
回复
PointF *m_ptPolygon 类型问题 ?
VergilYe 2018-04-04
  • 打赏
  • 举报
回复
顶一下,求各位大神帮忙
schlafenhamster 2018-04-03
  • 打赏
  • 举报
回复
使用 SetSize 预置 大小。 用 operator [ ] 直接赋值。
VergilYe 2018-04-03
  • 打赏
  • 举报
回复
或者说,是否有方法可以高效率插入大量坐标到CPtrArray里面?
VergilYe 2018-04-03
  • 打赏
  • 举报
回复
引用 2 楼 schlafenhamster 的回复:
使用 SetSize 预置 大小。 用 operator [ ] 直接赋值。
谢谢,待会我试试. 另外,我遇到一个新的问题: 我有一个类:

class A
{

 public:
          A(void);
          ~A(void);
 public:
     int               m_nPointCount;//多边形点的个数
     PointF	*m_ptPolygon; //记录多边形的坐标(动态分配内存)
}
其中:

	A::~A(void)
{
		if (m_ptPolygon!=NULL)
		{
			delete[] m_ptPolygon;
			m_ptPolygon = NULL;
			m_nPointCount = 0;
		}
}
我把结构体A放到了CArray<A,A&>中,且有如下操作:

CArray< A,A&>	m_Source;
CArray< A,A&>	m_Copy;

m_Copy.Copy(m_Source);
m_Source.RemoveAll();
发现m_Source在RemoveAll()执行后,m_Copy中的结构体A中的m_ptPolygon的数据也被清空了. 也就是说,CArray的m_Copy.Copy函数,只是把m_Source中的A.m_ptPolygon的地址Copy过来,随着m_Source中A的析构函数执行,那么m_Copy中的A.m_ptPolygon的地址所指向的数据已经被清空掉了... 请问,应该要怎么做才可以让m_Source中A.m_ptPolygon的数据跟着Copy进m_Copy?
目录 第1章 面向对象编程 1.1 面向对象的基本概念 1.1.1 类和对象 1.1.2 封装、多态和继承 1.1.3 消息 1.2 面向对象的建模技术UML 1.2.1 类图 1.2.2 交互图 1.2.3 用例图 1.3 面向对象的C++语言 1.3.1 C++对象的内存布局 1.3.2 C++编程技术要点 1.4 小结 第2章 窗口 2.1 窗口结构 2.2 窗口类型 2.3 窗口关系 2.4 消息和消息处理 2.4.1 系统定义的消息 2.4.2 应用程序定义的消息 2.4.3 消息参数 2.4.4 消息队列 2.4.5 消息循列 2.4.6 窗口过程 2.5 窗口应用框架 2.6 小结 第3章 MFC简介 3.1 MFC的优势 3.2 MFC中的类 3.3 用MFC开发应用的基本方法 3.4 MFC中的窗口管理 3.4.1 C++窗口对象和Windows窗体之间的关系 3.4.2 创建窗口 3.4.3 销毁窗体 3.4.4 定位窗体 3.4.5 绘图 3.4.6 消息处理 3.5 小结 第4章 CObject类 4.1 概述 4.2 创建对象 4.2.1 直接构造 4.2.2 使用new操作符 4.3 诊断功能 4.3.1 Dump成员 4.3.2 AssertValid 4.4 运行时类信息 4.4.1 CRuntimeClass结构 4.4.2 添加运行时类信息 4.4.3 IsKindOf 4.5 动态创建 4.6 序列化 4.6.1 添加序列化支持 4.6.2 CArchive类 4.6.3 对象序列化实例 4.7 小结 第5章 MFC应用框架 5.1 应用程序对象和MFC类库的交互 5.2 应用程序的初始化 5.3 消息循环 5.4 空闲处理 5.5 应用程序的退出 5.6 CWinApp提供的其他服务 5.6.1 外壳程序注册 5.6.2 文件管理器拖放 5.6.3 跟踪最近使用的文档 5.7 小结 第6章 消息映射 6.1 基本概念 6.2 消息映射表 6.3 一般窗口消息的处理成员的定位 6.4 命令处理成员的定位 6.5 消息映射宏 6.5.1 窗口映射宏 6.5.2 命令映射宏 6.5.3 控制通知消息映射宏 6.5.4 通知消息映射宏 6.5.5 反射消息映射宏 6.6 小结 第7章 消息处理 7.1 处理标准窗口消息 7.1.1 处理WM_CREATE消息 7.1.2 处理WM_DESTROY消息 7.1.3 处理WM_NCDESTORY消息 7.1.4 处理WM_CLOSE消息 7.2 处理命令消息 7.3 处理反射消息 7.4 投递和发送消息 7.4.1 投递和发送消息的概念 7.4.2 postMessage函数 7.4.3 SendMessage函数 7.4.4 SendMessage 7.5 SendNotifymessage和SendMessageCallback 7.6 使用自定义命令 7.7 使用自定义窗口消息 7.8 使用登记消息 7.9 处理线程消息 7.10 跨进程处理消息 7.11 消息钩子 7.11.1 钩子和过滤器 7.11.2 钩子的类型和范围 7.11.3 安装和解除消息钩子 7.11.4 使用线程范围和钩子实例 7.11.5 使用全局钩子实例 7.12 小结 第8章 对话框 8.1 对话框的生存期 8.1.1 对话框的创建 8.1.2 对话框的初始化 8.1.3 对话框的消息处理 8.1.4 对话框的结束 8.2 数据交换和数据验证 8.3 使用通用对话框 8.3.1 基本用法 8.3.2 定制通用对话框 8.4 运行时修改对话框 8.5 作为子窗口的对话框 8.6 HTML对话框 8.6.1 HTML资源 8.6.2 让HTML全部可见 8.6.3 混合HTML元素和窗口控件设计对话框 8.6.4 HTML消息处理 8.6.5 HTML元素和对话框成员间的数据交换 8.6.6 导航 8.6.7 基于HTML对话框的实用实例 8.7 使用属性表 8.8 使用对话栏 8.8.1 创建 8.8.2 销毁 8.8.3 处理控件消息 8.8.4 访问对话栏成员 8.8.5 实例 8.9 小结 第9章 文档和视图 9.1 文档/视图结构 9.1.1 原理 9.1.2 为什么使用文档/视图结构 9.1.3 基于文档/视图结构的应用 9.2 文档/视图结构的创建 9.2.1 文档模板的创建 9.2.2 文档的创建 9.2.3 框架的创建 9.2.4 视图的创建 9.2.5 文档/视图的初始化 9.3 深入文档模板 9.3.1 文档模板管理器 9.3.2 文档模板的创建 9.3.3 管理文档 9.3.4 其他 9.4 文档对象 9.4.1 文档的初始化 9.4.2 保存文档 9.4.3 设置修改标志和保存修改 9.4.4 关闭文档 9.4.5 管理视图 9.4.6 文档的销毁 9.4.7 命令处理 9.4.8 文档的序列化 9.4.9 设计文档的成员 9.5 视图对象 9.5.1 视图的初始化 9.5.2 视图和文档间的数据交换 9.5.3 视图的绘制 9.5.4 视图的销毁 9.6 框架窗口 9.6.1 初始化 9.6.2 和文档的交互 9.6.3 和视图的交换 9.6.4 命令处理 9.6.5 确定视图大小 9.6.6 为框架添加其他子控件 9.7 打印 9.7.1 文档/视图框架中的打印流程 9.7.2 自定义打印 9.7.3 打印预览 9.8 小结 第10章 深入视图 10.1 拆分 10.1.1 视图的创建 10.1.2 拆分窗口的命令处理 10.1.3 对拆分子窗口的管理 10.1.4 绘制 10.2 流动和缩放 10.2.1 滚动 10.2.2 缩放视图 10.3 控件视图 10.4 窗体视图 10.5 基于HTML的视图——CDHtmlView 10.5.1 加载HTML 10.5.2 事件处理 10.5.3 在新的文档中打开HTML 10.6 小结 第11章 GDI绘图 11.1 GDI绘图的编程模型 11.1.1 逻辑空间和设备空间 11.1.2 设备上下文 11.1.3 GDI对象 11.1.4 坐标变量和坐标映射 11.2 绘制图形 11.2.1 画线 11.2.2 绘制矩形 11.2.3 绘制椭圆 11.2.4 绘制弧线 11.2.5 绘制多边形 11.2.6 绘制贝济埃样条 11.2.7 使用路径 11.2.8 填充 11.2.9 区域 11.3 使用图像 11.3.1 位图的结构 11.3.2 位图类型 11.3.3 图像初始化和销毁 11.3.4 从文件加载图像文件 11.3.5 将图像保存为文件 11.3.6 图像的显示、裁剪和缩放 11.3.7 图像处理 11.4 小结 第12章 GDI+绘图 12.1 GDI+编程模型 12.1.1 GDI+的组成 12.1.2 GDI+功能 12.1.3 GDI+编程步骤 12.1.4 新增功能 12.2 绘制基数样条曲线 12.3 独立的路径对象 12.4 Alpha混合 12.4.1 在钢笔中应用Alpha混合 12.4.2 在画刷中应用Alpha混合 12.4.3 对图像应用Alpha混合 12.5 渐变 12.5.1 线性渐变 12.5.2 轨迹渐变 12.6 变换和矩形对象 12.7 使用图像 12.8 小结 第13章 进程和线程 13.1 基本理论 13.1.1 什么是进程 13.1.2 什么是线程 13.1.3 进程地址空间 13.1.4 线程的生命周期 13.2 创建子进程 13.3 虚拟内存管理 13.4 进程间内存共享 13.5 用户界面线程 13.5.1 创建 13.5.2 退出 13.5.3 线程间通信 13.6 辅助线程 13.6.1 创建 13.6.2 退出 13.6.3 线程间通信 13.7 线程安全措施 13.7.1 需要采取线程安全措施的对象 13.7.2 线程安全的实现 13.8 小结 第14章 动态链接库 14.1 简介 14.1.1 DLL的构成 14.1.2 到DLL的链接 14.1.3 DLL映射到进程空间 14.1.4 使用动态链接的好处 14.2 规则DLL创建及其使用 14.2.1 创建规则DLL 14.2.2 规则DLL的使用 14.2.3 输出全局变量 14.2.4 输出类 14.2.5 输出进程间共享的数据 14.3 进程状态、模块状态和线程状态 14.3.1 线程局部存储 14.3.2 模块状态 14.4 创建和使用扩展DLL 14.4.1 创建 14.4.2 使用 14.5 DLL中的资源 14.5.1 资源的名字和类型 14.5.2 确定定义资源的模块 14.5.3 在模块中查找、加载资源 14.5.4 枚举资源 14.5.5 修改可执行文件的资源 14.5.6 纯资源DLL 14.5.7 附属DLL 14.6 小结 第15章 COM组件编程 15.1 COM基础知识 15.1.1 COM中的接口 15.1.2 COM对象的线程模型 15.1.3 进程内组件和进程间组件 15.1.4 COM库 15.1.5 COMK 的功能复用 15.2 IUnknown接口在MFC中的实现 15.2.1 内部类 15.2.2 接口映射类 15.2.3 聚合的实现 15.3 类厂及其MFC实现 15.3.1 ColeObjectFactory类 15.3.2 全局类厂链 15.3.3 类厂的注册/反注册 15.3.4 类厂对象的创建 15.3.5 类厂对象创建COM对象 15.3.6 为CCmdTarget添加类厂支持 15.4 用MFC实现简单的COM组件 15.4.1 创建支持自动化的规则DLL 15.4.2 定义接口文件 15.4.3 实现被聚合的COM组件 15.4.4 实现包容组件 15.4.5 编译、注册COM组件 15.4.6 创建一个对话框应用 15.5 双重接口 15.5.1 调度表 15.5.2 COleDispatchImpl 15.5.3 m_xDispatch成员 15.5.4 输出IDispatch接口 15.5.5 双重接口的客户端 15.5.6 范例 15.6 可连接对象及其MFC实现 15.6.1 用CCmdTarget实现可连接对象 15.6.2 可连接对象的客户端 15.7 封送的应用:在线程间传递接口指针 15.8 小结 第16章 .NET应用开发 16.1 C++托管扩展简介 16.1.1 什么是.NET平台 16.1.2 托管C++中的类型 16.1.3 托管C++的用途 16.1.4 为什么MFC应用添加托管支持 16.1.5 使用.NET类型 16.1.6 实例:创建手管类型 16.1.7 装箱:值类型到引用类型的转化 16.1.8 托管类型和非托管类型的混用 16.1.9 固定指针 16.2 常用的托管C++编程技能 16.2.1 声明托管类 16.2.2 声明值类型的托管类型 16.2.3 添加属性 16.2.4 定义及实现接口 16.2.5 托管数组 16.2.6 处理异常 16.2.7 定义和使用委托 16.2.8 创建对象 16.2.9 对象的序列化和反序列化 16.2.10 用ADO.NET访问数据库 16.2.11 断方和条件编译 16.3 具有双重接口功能的规则DLL 16.4 典型托管应用开发 16.4.1 控制台应用 16.4.2 类库应用 16.4.3 窗体应用 16.5 小结
请下载完四个包后解压即可,其中只包含源代码,而没有电子书;我相信大家需要的应该就是源代码了,呵呵,电子书么随便网上搜索就会找到咯。 包含图书中的每个案例的源代码、可执行文件和所有资源文件,具体组织结构如下: 第一章 VC++.NET 编程基础 案例1 第一个Windows程序 案例2 基数转换计数器 案例3 打印杨晖三角形 案例4 确定一个月的天数 案例5 石头、剪子、布猜拳游戏 案例6 创建动态菜单 案例7 创建工具栏 案例8 递归与全局变量的案例1-打靶程序 案例9 调用VC++.NET中数学函数 案例10 在列表框中加入图片 第二章 图形图像处理—GDI+编程 案例1 绘制风格迥异的直线 案例2 绘制贝济埃曲线 案例3 不规则窗体的实现 案例4 如何在上传的图片上加上版权文字 案例5 在图片中绘制水印效果图 案例6 动态多边形 案例7 绘制一个电子时钟 案例8 图片的淡如淡出效果 案例9 放大镜游戏 案例10 生成缩略图 案例11 透明的窗体 案例12 修改图像的分辨率 案例13 Windows涂鸦程序 案例14 抓取指定区域的图像 案例15 动画范例——飞碟绑架地球人 第三章 多媒体应用 案例1 flash 动画播放器 案例2 OpenGL屏幕保护程序 案例3 显示器的分辨率调整 案例4 五子棋程序 案例5 制作Windows媒体播放器 案例6 会跑的按钮 案例7 CD唱机 第四章 系统文件处理 案例1 建立一个具有查找功能的文本编译器 案例2 建立文件浏览器 案例3 显示驱动器中所有目录 案例4 实现目录遍历 案例5 读写文本文件和二进制文件 案例6 访问注册表中的硬件信息 案例7 显示系统的时间与日期 案例8 模拟Windows XP关闭系统 案例9 MDI窗体菜单设计 案例10 登录对话框的实现 案例11 拖放操作的实现 案例12 创建自定义文件类型 案例13 监视系统文件的状态 第五章 硬件的控制 案例1 限制鼠标的活动区域 案例2 处理鼠标和键盘事件 案例3 打印及打印预览的实现 案例4 内存占用显示 案例5 显示系统设备 案例6 通过驱动程序控制系统外设 案例7 自动发送和接收传真 第六章 数据库应用 案例1 利用ADO.NET连接到数据源以及关闭数据库 案例2 参数化查询数据表 案例3 数据库的窗体向导和关联查询 案例4 编程实现记录编辑 案例5 单记录更新数据源 案例6 动态创建数据库和数据表 案例7 大数据量的分页显示 案例8 图像在数据库中的存储 案例9 创建动态水晶数据报表 案例10 动态创建MSChart统计图表 第七章 网络应用 案例1 获取DNS 案例2 获取自己的IP地址 案例3 在窗口中PING一个IP地址 案例4 显示指定工作组内的所有计算机 案例5 电子邮件的发送与接收 案例6 简易WEB浏览器 案例7 FTP浏览器的制作 案例8 TCP点对点联机程序 案例9 UDP联机程序 案例10 C/S分布式QQ模型聊天室 第八章 控件操作 案例1 设置控件字体 案例2 动态填充组合框 案例3 列表控件的实现 案例4 动态添加控件 案例5 动画窗体的实现 第九章 综合实例 综合实例1 OpenGL视图中绘制三维物体 综合实例2 使用DirectX制作粒子系统 综合实例3 中国象棋游戏 综合实例4 电子商务系统实现(C/S)
Visual C# 2005 程序设计自学手册 *****是随书源码光盘***** *****人民邮电出版社***** **长春明日科技组织编写** 本书从初学者角度出发,通过通俗易懂的语言和大量生动典型的实例,由浅入深、循序渐进地介绍使用C#进行WinForms程序开发的常用技术和方法。全书分起步篇、提高篇和实例篇三篇,共21章。起步篇为第1章~第10章,主要介绍认识Visual C#,C#语言基础,C#语句控制,数组、面向对象编程,熟悉WinForms应用程序,WinForms窗体介绍,WinForms应用程序开发常用控件,菜单栏、工具栏和状态栏设计及对话框等内容;提高篇为第11章~第19章,主要介绍使用ADO.NET操作数据库、文件处理技术、HTML帮助文件的制作、GDI+技术、Windows打印控件、网络开发技术、注册表应用、程序调试及Windows应用程序打包与安装等内容;实例篇为第20章~第21章,主要结合实际开发经验介绍利用C#开发企业客户资源管理系统和房屋中介管理系统等内容。   本书附有配套光盘。光盘提供了书中所有实例的源代码,全部源代码都经过精心调试,在Windows XP/Windows 2000/Windows 2003 Server下全部通过,保证能够正常运行。   本书适用于C#初、中级用户,也可作为大、中专院校师生和培训班的教材,对于程序开发爱好者,本书也有非常好的参考价值。 第1篇 起步篇 第1章 认识Visual C# 3 1.1 Visual C# 概述 4 1.1.1 Visual C#发展历程 4 1.1.2 C#语言编程环境 4 1.2 .NET Framework 2.0简介 4 1.2.1 什么是.NET Framework 2.0 4 1.2.2 .NET Framework 2.0特性 5 1.3 安装集成开发环境Microsoft Visual Studio 2005 6 1.3.1 安装Microsoft Visual Studio 2005开发环境 6 1.3.2 安装Microsoft Visual Studio 2005 MSDN帮助 9 1.3.3 如何使用MSDN帮助 11 1.3.4 利用MSDN帮助附带的示例学习编程 12 1.4 创建第一个C# 程序 13 1.4.1 创建项目 13 1.4.2 设计界面 14 1.4.3 编写代码 15 1.4.4 调试运行 16 1.4.5 保存项目 17 1.5 本章小结 17 第2章 C#语言基础 18 2.1 C#语言简介 19 2.2 数据类型 19 2.2.1 什么是数据类型 19 2.2.2 值类型的使用 19 2.2.3 引用类型的使用 19 2.2.4 什么是装箱和拆箱 21 2.2.5 装箱和拆箱的使用 21 2.3 常量与变量 21 2.3.1 声明和使用常量 21 2.3.2 声明变量 22 2.3.3 变量的作用域 23 2.3.4 变量的赋值 23 2.4 数据类型转换 24 2.4.1 隐式类型转换 24 2.4.2 显式类型转换 24 2.5 C#中运算符的使用 25 2.5.1 算术运算符的使用 25 2.5.2 赋值运算符的使用 27 2.5.3 关系运算符的使用 29 2.5.4 逻辑运算符的使用 29 2.5.5 位运算的使用 29 2.5.6 其他特殊运算符 30 2.5.7 运算符优先级 31 2.6 字符串处理 31 2.6.1 比较字符串 32 2.6.2 定位字符及子串 33 2.6.3 格式化字符串 35 2.6.4 截取字符串 35 2.6.5 分割字符串 36 2.6.6 插入和填充字符串 37 2.6.7 删除和剪切字符串 37 2.6.8 复制字符串 39 2.6.9 替换字符串 40 2.6.10 StringBuilder的定义与使用 40 2.6.11 可变字符串类StringBuilder与String的区别 42 2.7 程序编写规范 42 2.7.1 代码书写规则 42 2.7.2 命名规范 43 2.8 注释 44 2.8.1 注释的作用 44 2.8.2 如何使用注释 45 2.9 本章小结 45 第3章 C#语句控制 46 3.1 选择语句 47 3.1.1 使用if语句实现单分支选择结构 47 3.1.2 使用if...else语句实现双分支选择结构 47 3.1.3 使用if...else if...else语句实现多分支选择结构 48 3.1.4 嵌套if语句的使用 50 3.1.5 使用Switch语句实现多分支选择 52 3.2 迭代语句 53 3.2.1 使用while循环语句控制程序 54 3.2.2 使用do while循环语句控制程序 55 3.2.3 使用for循环语句控制程序 56 3.2.4 使用foreach循环语句控制程序 57 3.3 跳转语句 58 3.3.1 使用break语句实现程序跳转 58 3.3.2 使用continue语句的实现程序跳转 60 3.3.3 使用goto语句实现程序跳转 60 3.3.4 使用return语句实现程序跳转 62 3.4 异常处理语句 63 3.4.1 throw语句 63 3.4.2 try-catch语句 64 3.4.3 try-catch-finally语句 65 3.5 本章小结 66 第4章 数组 67 4.1 数组简介 68 4.1.1 数组的概述 68 4.1.2 数组的应用 68 4.2 静态数组 69 4.2.1 一维数组的声明 69 4.2.2 一维数组元素的调用 69 4.2.3 二维数组的声明和调用 70 4.2.4 多维数组 71 4.3 动态数组 72 4.3.1 动态数组的声明 72 4.3.2 声明动态数组的注意事项 74 4.4 数组的基本操作 74 4.4.1 输入与输出数组 74 4.4.2 如何定位数组 76 4.4.3 如何遍历数组 78 4.4.4 增加删除数组元素 78 4.4.5 对数组进行排序 81 4.4.6 数组的合并与拆分 83 4.4.7 数组应用典型实例 85 4.5 本章小结 86 第5章 面向对象编程 87 5.1 面向对象编程 88 5.1.1 什么是面向对象编程 88 5.1.2 面向对象编程语言的特点 88 5.2 类 89 5.2.1 类的概念 89 5.2.2 类的声明 89 5.2.3 类成员的访问 89 5.2.4 类成员的保护 90 5.3 对象 90 5.3.1 对象的声明和实例化 90 5.3.2 类与对象的关系 91 5.4 构造函数和析构函数 91 5.4.1 构造函数的概念及使用 92 5.4.2 析构函数的概念及使用 92 5.5 枚举 93 5.5.1 什么是枚举 93 5.5.2 枚举的定义 93 5.5.3 枚举的使用 94 5.6 方法 95 5.6.1 方法的声明 95 5.6.2 方法的参数 96 5.6.3 静态和非静态方法的使用 96 5.6.4 方法的重载 98 5.7 封装、继承和多态 98 5.7.1 封装的概念及用途 98 5.7.2 封装的使用 98 5.7.3 继承的概念及用途 99 5.7.4 继承的使用 99 5.7.5 多态的概念及用途 100 5.7.6 多态的使用 100 5.8 接口 102 5.8.1 接口的概念 102 5.8.2 声明接口 102 5.8.3 接口的成员 102 5.8.4 接口的实现 103 5.8.5 抽象类与接口 104 5.9 域和属性 105 5.9.1 域的概念及用途 105 5.9.2 域的声明 105 5.9.3 属性的概念及用途 106 5.9.4 属性的声明 106 5.10 泛型 107 5.10.1 泛型概述及优点 107 5.10.2 泛型中的类型参数T 107 5.10.3 泛型的使用 108 5.11 匿名方法 111 5.11.1 什么是匿名方法 111 5.11.2 匿名方法的使用 111 5.12 迭代器 112 5.12.1 什么是迭代器 112 5.12.2 创建迭代器 113 5.12.3 迭代器的使用 113 5.13 分部类 114 5.13.1 什么是分部类 114 5.13.2 定义分部类 114 5.13.3 分部类的使用 114 5.14 事件和索引器 115 5.14.1 事件的概念及用途 115 5.14.2 事件的声明及使用 116 5.14.3 索引器的概念及用途 117 5.14.4 索引器的声明及使用 117 5.15 本章小结 118 第6章 熟悉WinForms应用程序 119 6.1 窗体设计器 120 6.1.1 创建窗体 120 6.1.2 使用窗体设计器 122 6.2 使用工具 123 6.2.1 熟悉工具箱 123 6.2.2 认识控件属性框 125 6.2.3 认识解决方案资源管理器 125 6.2.4 认识服务器资源管理器 128 6.3 本章小结 131 第7章 WinForms窗体介绍 132 7.1 Form窗体 133 7.1.1 Form窗体概述 133 7.1.2 Form窗体的使用 133 7.2 MDI窗体 134 7.2.1 MDI窗体概述 134 7.2.2 MDI窗体的使用 135 7.3 继承窗体 136 7.3.1 继承窗体概述 136 7.3.2 继承窗体的使用 137 7.4 本章小结 138 第8章 WinForms应用程序开发常用控件 139 8.1 控件概述 140 8.1.1 控件的作用 140 8.1.2 控件的属性、方法和事件 140 8.2 控件的分类 142 8.2.1 常用控件 143 8.2.2 容器控件 143 8.2.3 数据控件 143 8.2.4 打印控件 143 8.2.5 对话框控件 144 8.3 控件的相关操作 144 8.3.1 添加控件 144 8.3.2 对齐控件 144 8.3.3 调整控件的前后顺序 144 8.3.4 锁定控件 145 8.3.5 删除控件 145 8.4 文本类控件 145 8.4.1 应用Label控件 145 8.4.2 应用LinkLabel控件 148 8.4.3 应用Button控件 150 8.4.4 应用TextBox控件 153 8.4.5 应用RichTextBox控件 155 8.5 选择类控件 158 8.5.1 应用ComboBox控件 158 8.5.2 应用CheckBox控件 161 8.5.3 应用CheckedListBox控件 163 8.5.4 应用RadioButton控件 166 8.5.5 应用NumericUpDown控件 167 8.5.6 应用ListBox控件 170 8.6 容器控件 173 8.6.1 应用Panel控件 173 8.6.2 应用GroupBox控件 176 8.6.3 应用TabControl控件 177 8.7 组件 180 8.7.1 应用ErrorProvider组件 180 8.7.2 应用Timer组件 182 8.7.3 应用ImageList组件 184 8.7.4 应用FileSystemWatcher组件 186 8.7.5 应用HelpProvider组件 189 8.8 其他常用控件 191 8.8.1 应用ListView控件 191 8.8.2 应用TreeView控件 194 8.8.3 应用PictrueBox控件 197 8.8.4 应用NotifyIcon控件 200 8.8.5 应用DateTimePicker控件 202 8.8.6 应用MonthCalendar控件 204 8.8.7 应用ToolTip控件 206 8.8.8 应用ProgressBar控件 208 8.9 本章小结 211 第9章 菜单栏、工具栏和状态栏设计 212 9.1 菜单栏 213 9.1.1 菜单栏概念和用途 213 9.1.2 菜单栏设计 214 9.2 工具栏 215 9.2.1 工具栏概念和用途 215 9.2.2 工具栏设计 215 9.3 状态栏 217 9.3.1 状态栏概念和用途 217 9.3.2 状态栏设计 217 9.4 本章小结 218 第10章 对话框 219 10.1 消息对话框 220 10.1.1 什么是消息对话框 220 10.1.2 消息对话框的使用 220 10.2 “关于”对话框 228 10.2.1 什么是“关于”对话框 228 10.2.2 “关于”对话框的使用 228 10.3 公共对话框 230 10.3.1 “打开”对话框的使用 230 10.3.2 “另存为”对话框的使用 233 10.3.3 “颜色”对话框的使用 235 10.3.4 “字体”对话框的使用 238 10.3.5 “浏览文件夹”对话框的使用 240 10.4 本章小结 242 第2篇 提高篇 第11章 使用ADO.NET操作数据库 245 11.1 使用ADO.NET访问数据库 246 11.1.1 ADO.NET访问数据库的模式 246 11.1.2 数据库命名空间 247 11.2 ADO.NET对象模型 251 11.2.1 Connection对象 251 11.2.2 Command对象 253 11.2.3 DataReader对象 256 11.2.4 DataSet对象 258 11.2.5 DataAdapter对象 263 11.3 应用DataGridView控件 265 11.3.1 DataGridView控件的属性 265 11.3.2 DataGridView控件的方法 267 11.3.3 DataGridView控件的事件 269 11.3.4 DataGridView控件的使用 271 11.4 数据库开发基本操作 272 11.4.1 向数据库中添加数据 272 11.4.2 修改数据库中数据 273 11.4.3 删除数据库中数据 275 11.4.4 查询数据库中数据 276 11.5 本章小结 278 第12章 文件处理技术 279 12.1 System.IO命名空间 280 12.1.1 File类和Directory类 281 12.1.2 FileInfo类和DirectoryInfo类 283 12.1.3 FileStream类 284 12.1.4 StreamWriter类 287 12.1.5 StreamReader类 289 12.2 文件的基本操作 290 12.2.1 判断文件是否存在 291 12.2.2 创建文件 291 12.2.3 拷贝或移动文件 291 12.2.4 删除文件 291 12.2.5 获取文件基本信息 291 12.3 文件夹的基本操作 292 12.3.1 判断文件夹是否存在 292 12.3.2 创建文件夹 292 12.3.3 移动文件夹 292 12.3.4 删除文件夹 292 12.3.5 遍历文件夹中文件 292 12.4 文件写入和读取 294 12.4.1 文本文件的写入 294 12.4.2 文本文件的读取 294 12.5 解压缩文件 295 12.5.1 使用GZip解压缩文件 295 12.5.2 使用WinRAR解压缩文件 297 12.6 本章小结 299 第13章 HTML帮助文件的制作 300 13.1 HTML帮助文件概述 301 13.2 制作HTML帮助文件 301 13.2.1 安装Microsoft HTML Help Workshop 301 13.2.2 制作HTML帮助主题文件 302 13.2.3 制作HTML帮助项目文件 303 13.2.4 制作目录和目录文件 306 13.2.5 制作关键字和索引文件 309 13.2.6 制作.chm文件 313 13.3 HTML帮助文件的使用 314 13.4 本章小结 315 第14章 GDI+技术 316 14.1 GDI+概述 317 14.2 基本图形绘制 317 14.2.1 绘制直线 317 14.2.2 绘制矩形 318 14.2.3 绘制椭圆 319 14.2.4 绘制圆弧 320 14.2.5 绘制多边形 322 14.2.6 绘制基数样条 323 14.2.7 绘制贝塞尔样条 324 14.2.8 绘制图形路径 326 14.3 GDI+在实际开发中的应用 327 14.3.1 利用柱形图分析每月的商品销售情况 327 14.3.2 利用折线图分析网站访问流量 330 14.3.3 利用饼形图分析公司男女比例 333 14.4 本章小结 334 第15章 Windows打印控件 335 15.1 PrintDocument组件 336 15.1.1 PrintDocument组件的属性 336 15.1.2 PrintDocument组件的方法 337 15.1.3 PrintDocument组件的事件 337 15.1.4 PrintDocument组件的应用 338 15.2 PrintPreviewDialog组件 340 15.2.1 PrintPreviewDialog组件的属性 340 15.2.2 PrintPreviewDialog组件的方法 341 15.2.3 PrintPreviewDialog组件的应用 341 15.3 PrintPreviewControl组件 342 15.3.1 PrintPreviewControl组件的属性 342 15.3.2 PrintPreviewControl组件的方法 344 15.3.3 PrintPreviewControl组件的应用 344 15.4 PrintDialog组件 345 15.4.1 PrintDialog组件的属性 346 15.4.2 PrintDialog组件的方法 347 15.4.3 PrintDialog组件的应用 347 15.5 PageSetupDialog组件 348 15.5.1 PageSetupDialog组件的属性 349 15.5.2 PageSetupDialog组件的方法 349 15.5.3 PageSetupDialog组件的应用 350 15.6 本章小结 351 第16章 网络开发技术 352 16.1 System.Net命名空间 353 16.1.1 Dns类 353 16.1.2 DnsPermission类 355 16.1.3 WebRequest类 356 16.1.4 WebClient类 356 16.2 System.Net.Socket命名空间 356 16.2.1 什么是套接字 357 16.2.2 Socket类的属性、方法 357 16.3 开发网络应用程序 364 16.3.1 开发UDP协议聊天程序 364 16.3.2 开发TCP/IP协议聊天室 365 16.4 电子邮件的发送与接收 367 16.4.1 MailMessage类和SmtpClient类的作用 367 16.4.2 POP3类的作用 368 16.4.3 电子邮件的发送 369 16.4.4 电子邮件的接收 370 16.5 本章小结 375 第17章 注册表应用 376 17.1 注册表基础知识 377 17.1.1 注册表概述 377 17.1.2 注册表的结构 377 17.2 读写注册表 379 17.2.1 读取注册表信息 380 17.2.2 向注册表中写入信息 382 17.3 注册表应用 384 17.3.1 将软件使用次数写入注册表 384 17.3.2 通过注册表优化系统 385 17.4 本章小结 386 第18章 程序调式 388 18.1 什么是断点操作 389 18.2 如何使用开始、中断和停止执行 389 18.3 什么是单步执行 391 18.4 如何运行到指定位置 391 18.5 本章小结 391 第19章 Windows应用程序打包与安装 392 19.1 Windows Installer简介 393 19.2 Windows应用程序部署 393 19.2.1 创建部署项目 393 19.2.2 可选的部署功能 396 19.3 安装及卸载Windows程序 399 19.3.1 在本地计算机上安装 399 19.3.2 部署到其他计算机 399 19.3.3 卸载安装应用序 399 19.4 本章小结 400 第3篇 实例篇 第20章 企业客户资源管理系统 403 20.1 需求分析 404 20.2 系统设计 404 20.2.1 总体规划 404 20.2.2 系统功能结构图 405 20.2.3 开发及运行环境 405 20.3 系统命名规则 405 20.3.1 数据库命名规范 405 20.3.2 程序代码命名规范 406 20.4 数据库设计 407 20.4.1 数据表概要说明 407 20.4.2 主要数据表的结构 408 20.5 系统总体架构 409 20.5.1 文件架构 409 20.5.2 程序文件架构 410 20.6 公共类编写 411 20.6.1 BaseOperate类 411 20.6.2 OperateAndValidate类 413 20.7 系统模块设计 415 20.7.1 系统登录模块设计 415 20.7.2 主窗体模块设计 418 20.7.3 基本信息管理模块设计 420 20.7.4 客户资料管理模块设计 425 20.7.5 联系客户模块设计 431 20.7.6 客户级别分析模块分析 435 20.8 疑难问题解析 436 20.8.1 邮件的发送 436 20.8.2 水晶报表的使用 437 20.9 本章小结 438 第21章 房屋中介管理系统 439 21.1 需求分析 440 21.2 系统设计 440 21.2.1 总体规划 440 21.2.2 系统功能结构图 441 21.2.3 开发及运行环境 441 21.3 系统命名规则 442 21.4 数据库设计 442 21.4.1 数据表概要说明 442 21.4.2 主数据表的结构 442 21.4.3 创建视图 445 21.4.4 创建存储过程 446 21.4.5 创建触发器 448 21.5 系统总体架构 450 21.5.1 文件夹架构 450 21.5.2 文件架构 450 21.6 公共类编写 452 21.6.1 数据库连接类 452 21.6.2 实体类 452 21.6.3 方法类 453 21.7 系统模块设计 454 21.7.1 系统登录模块设计 454 21.7.2 用户信息管理模块设计 456 21.7.3 房源信息设置模块设计 460 21.7.4 房源信息查询模块设计 463 21.7.5 房源状态查询模块设计 467 21.8 疑难问题解析 474 21.8.1 通过触发器对视图进行添加、修改和删除操作 474 21.8.2 结束数据库连接进程完成数据库还原 474 21.9 本章小结 475 光盘源码下载地址: http://download.csdn.net/source/2891837 第一部分(1-8章) http://download.csdn.net/source/2891864 第二部分(9-15章) http://download.csdn.net/source/2891889 第三部分(16-21章) 或者搜索CSDN lawsystem上传资源。 此电子书全部下载地址: http://download.csdn.net/source/2892106 卷1 http://download.csdn.net/source/2892170 卷2 http://download.csdn.net/source/2892205 卷3
 第一部分 Windows编程基础   第一章 无尽之旅    历史一瞥    设计游戏    游戏类型    集思广益    设计文档和情节图板    使游戏具有趣味性    游戏的构成    常规游戏编程指导    使用工具    从准备到完成一使用编译器    实例:FreakOut    总结   第二章 Windows编程模型    Windows的历史    多任务和多线程    按照Microsoft方式编程:匈牙利符号表示法    世界上最简单的Windows程序    真实的Windows应用程序    Windows类    注册Windows类    创建窗口    事件处理程序    主事件循环    产生一个实时事件循环    打开多个窗口    总结   第三章 高级Windows编程    使用资源    使用菜单编程    图形设备接口GDI介绍    处理重要事件    将消息传递给自己    总结   第四章 WindowsGDI、控件和突发奇想    高级GDI图形    点、线、平面多边形和圆    关于文本和字体    定时的重要性    使用控件    获取信息    T3D游戏控制程序    总结   第二部分 DirectX和2D基础   第五章 DirectX基础和令人生畏的COM    DirectX基础    COM:这是Microsoft的工作,还是魔鬼的?    应用DirectXCOM对象    COM的前景    总结   第六章 首次接触:DirectDraw    DirectDraw界面    创建DirecDraw对象    和Windows协同工作    进入事件模式    巧妙的色彩    创建一个显示画面    总结   第七章 高级DirectDraw和位图图形    真彩色模式下工作    双缓冲    动态画面    页面变换    应用图形变换器    剪切基础    采用位图    备用画面    位图的放旋转和缩放    离散采样理论    色彩效果    人工色彩变换或者查询表    新的DirectX色彩和Gamma控制接口    GDI和DirectX混合使用    获取DirectDraw的真用    在画面上冲浪    使用调色板    在窗口模式下应用DirectDraw    总结   第八章 矢量光栅化及2D变换    绘制线条    线框多边形    2D平面的变换    矩阵引论    变换    缩放    旋转    填充实心多边形    多边形碰撞检测    定时与同步说解    滚动和视角场景    伪3D等角引擎    T3DLIB1库函数    BOB(变换对象)引擎    总结   第九章 用DirectInput和力反馈进行输入    输入循环回顾    DirectInput序曲    力反馈详述    编写通用的输入系统:T3DLIB2CPP    总结   第十章 用DriectSound和DirectMusic演奏乐曲    PC上的声音编程    声音产生的原因    数字与MIDI——发声大,填充少    发声硬件    数字化记录:工具和技术    DirectSound中的麦克风    启动DirectSound    主要与辅助的声音缓冲    播放声音    用DirectSound反馈信息    读取磁盘中数据    DirectMusic:伟大的试验    DirectMusic的结构    启动DirectMusic    加载MIDI段    操作MIDI段    T3DLIB3声音和音乐库    DirectSound API封装    总结   第三部分 编程核心   第十一章 算法、数据结构、内存管理及多线程    数据结构    算法分析    递归    树结构    优化理论    制作演示程序    保存游戏的策略    实现多人游戏    多线程编程技术    总结   第十二章 人工智能在游戏中的运用    人工智能入门    明确AI算法    模式和基础控制脚本    行为状态系统建模    应用软件对存储和学习建模    计划和决策树    导航    高级AI脚本    人工神经网络    遗传算法    模糊逻辑    在游戏中创建真正的AI    小结   第十三章 基本物理建模    物理学基本定律    线性动量的物理性质:守恒和传递    万有引力效果模型    磨擦力    基本的特殊碰撞响应(高级)    解决n-t坐标系统    简单运动学    微粒系统    游戏关键:创建游戏的物理模型    总结

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧