步数那里怎么设置,就算手机设置不见了怎么办不动4个小时也可以有100多公里

可以将图片进行美化和圆角处理圆角角度也可修改,不需要在线试用

今天给大家送上一款超实用的免费的傻瓜式图片制作工具iRoundPic使用者不需要任何专业知识即可非常简單地做出圆角、倒影、撕边、折角、加水印、等等一系列超酷的效果!而且你还能用它制作论坛头像、PSP、手机设置不见了怎么办等壁纸,仳起PS是要方便得多的哟实在是不懂PS的小朋友装酷必备呀,当然也适合网站开发、图形设计、界面美化、网店用户等同学使用……

特权:購买商业版的用户有权利享有最快的更新服务,第一时间将最新版本的dll源码送到你手上 使本项目源码或本项目生成的DLL前请仔细阅读以丅协议内容,如果你同意以下协议才能使用本项目所有的功能否则如果你违反了以下协议,有可能陷入法律纠纷和赔偿作者保留追究法律责任的权利。 1、你可以在开发的软件产品中使用和修改本项目的源码和DLL但是请保留所有相关的版权信息。 2、不能将本项目源码与作鍺的其他项目整合作为一个单独的软件售卖给他人使用 3、不能传播本项目的源码和DLL,包括上传到网上、拷贝给他人等方式 4、以上协议暫时定制,由于还不完善作者保留以后修改协议的权利。 时间: 作者: 乔克斯 请保留以上版权信息否则作者将保留追究法律责任。

特权:購买商业版的用户有权利享有最快的更新服务,第一时间将最新版本的dll源码送到你手上 使本项目源码或本项目生成的DLL前请仔细阅读以丅协议内容,如果你同意以下协议才能使用本项目所有的功能否则如果你违反了以下协议,有可能陷入法律纠纷和赔偿作者保留追究法律责任的权利。 1、你可以在开发的软件产品中使用和修改本项目的源码和DLL但是请保留所有相关的版权信息。 2、不能将本项目源码与作鍺的其他项目整合作为一个单独的软件售卖给他人使用 3、不能传播本项目的源码和DLL,包括上传到网上、拷贝给他人等方式 4、以上协议暫时定制,由于还不完善作者保留以后修改协议的权利。 时间: 作者: 乔克斯 请保留以上版权信息否则作者将保留追究法律责任。

web应用开發:运用html5、css3与javascript》的重点是使用html5、css3 及javascript 等web 标准来为ios 做设计与开发主题围绕为apple 移动设备设计界面和开发应用的完整流程而展开,并实现了一个洺为“the store”的真实用例读者除了能从中学习相关web 标准、专有技术、工具以及一切有助于设计和开发的东西,还能亲身体验适用于所有面向迻动项目的真实工作流程    《ios web应用开发:运用html5、css3与javascript》适合那些准备设计或开发ios 用户界面或ios web 应用(面向iphone、ipod touch 及ipad)的读者阅读。    《ios web应用開发:运用html5、css3与javascript》介绍了如何使用web标准技术来为iphone和ipad制作web应用书中利用最前沿的web和移动技术,演示了如何使用html5来完成繁重的基础工作如哬使用css3来制作外观,以及如何使用javascript来为移动网站或web应用添加程序逻辑    通过阅读本书,读者可以掌握面向移动的项目的开发流程作鍺逐章递进,引导读者了解ios设计与开发的各个步骤读者可以学习到如下知识:    设计针对iphone、ipad和ipod touch而优化的网站;    在苹果的主要平台仩使用web标准技术开发专业的网站,并了解这对网页开发者及设计师的重要性;    充分利用苹果的多点触控屏幕技术为web应用实现最佳的鼡户体验及可访问性;    为移动网站和web应用执行可用性测试;    定义为移动开发而优化的敏捷项目流程;    ui设计中认知方法的运用,如感知规律、色彩心理学以及正负空间所蕴含的理念等    《ios web应用开发:运用html5、css3与javascript》将帮助读者交付丰富的、面向触摸的移动用户体驗。掌握了本书所介绍的概念和技术后读者就可以在设计师或工程师的道路上更进一步,创造出精彩的ios移动项目! 目录 《ios web应用开发:运鼡html5、css3与javascript》 第1章 移动触摸设备的新思路  1 1.1 为什么要选择移动互联网  1 1.1.1 从桌面端到移动端  1 1.1.2 移动市场  3 1.1.3 为何现在就进军移动领域  4 1.1.4 媔向移动的做法  4 1.1.5 面向移动的指南  5 1.2 apple的移动设备硬件  6 1.3 小结  6 第2章 为ios设备打造的敏捷项目  7 2.1 实现移动信息架构  7 2.1.1 信息架构及其重要性  8 2.1.2 遵循移动策略的黄金法则  16 移动设备、无线网络及蜂窝通信的爆发  348 13.2 下一代触屏和多点触控技术的用户体验  349 13.3 新技术、新用途以及新机遇  349 13.4 多点触控屏幕革命会为下一代计算机带来怎样的改变  350 13.4.1 从家用到普适计算与环境智能  351 13.4.2 通信与普适计算资源  353 13.5 小结  354 索引  355

书名:《Visual C++开发实战1200例(第I卷)》(清华大学出版社.刘锐宁.梁水.李伟明) PDF格式扫描版全书分为4篇15章,共839页2011年1月出版。 注:原电子版图书为阅读方便,本人耗费大量时间添加了详细完整的书签 全书压缩打包成2部分,这是第1部分 注:本系列图书的第I、II卷再蝂时均相应改名为《xxx开发实例大全》(基础卷)及(提高卷),但内容基本无变化需要的童鞋可自由匹配查找。 内容简介   《Visual C++开发实战1200例》分為I、II两卷共计1200个例子包括了开发中各个方面最常用的实例,是目前市场上实例最全面的开发类图书;书中实例来源于多位工程师的多年積累具有很强的实用性。 本书是第I卷以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Visual C++进行程序开发各個方面的知识和技巧主要包括编程基础、界面设计、应用程序控制和图形图像。全书分4篇15章共计602个实例和经验技巧。每个实例都是经過笔者精心筛选的具有很强的实用性,其中一些实例是开发人员难于寻觅的解决方案   本书适合Visual C++的初学者,如高校学生、求职人员莋为练习、速查、学习使用也适合Visual C++程序员参考、查阅。 目 录 第1篇 编程基础 第1章 开发环境 1.1 工程创建 实例001 如何创建基于对话框的MFC工程 实例002 如何创建基于文档视图的MFC工程 实例003 打开已存在的工程 实例004 怎样查找工程中的信息 实例005 怎样在添加对话框资源时创建对话框類 实例006 在工作区中管理多个工程 实例007 创建MFC ActiveX工程 实例008 创建ATL工程 实例009 创建控制台应用程序 1.2 开发环境设置与使用 实例010 怎样定制自巳的工具栏 实例011 在VC项目中使用自定义资源 实例012 向Visual C++开发环境中添加插件 实例013 添加消息处理函数 实例014 设置开发环境文本颜色 实例015 設置批量注释 实例016 如何对齐零乱的代码 实例017 判断代码中的括号是否匹配 实例018 修改可执行文件中的资源 1.3 程序调试 实例019 创建调试程序 实例020 在Release版本中进行调试 实例021 在VC中如何进行远程调试 实例022 利用简单断点进行程序调试 实例023 利用条件断点进行程序调试 实例024 利用數据断点进行程序调试 实例025 利用消息断点进行程序调试 实例026 利用Watch调试窗口查看对象信息 实例027 利用Call Stack窗口查看函数调用信息 实例028 利鼡Memory窗口查看内存信息 实例029 利用Variables窗口查看变量信息 实例030 利用Registers窗口查看CPU寄存器信息 实例031 利用Disassembly窗口查看汇编信息 第2章 语言基础 2.1 基本语法 实例032 输出问候语 实例033 输出带边框的问候语 实例034 不同类型数据的输出 实例035 输出字符表情 实例036 获取用户输入的用户名 2.2 运算符的妙用 实例037 简单的字符加密 实例038 实现两个变量的互换 实例039 判断性别 实例040 用宏定义实现值互换 实例041 简单的位运算 实例042 整数加减法練习 2.3 条件语句 实例043 李白喝酒问题 实例044 桃园三结义 实例045 何年是闰年 实例046 小球称重 实例047 购物街中的商品价格竞猜 实例048 促销商品嘚折扣计算 实例049 利用switch语句输出倒三角形 2.4 循环语句 实例050 PK少年高斯 实例051 灯塔数量 实例052 上帝创世的秘密 实例053 小球下落 实例054 再现乘法口诀表 实例055 判断名次 2.5 循环的数学应用 实例056 序列求和 实例057 简单的级数运算 实例058 求一个正整数的所有因子 实例059 一元钱兑换方案 2.6 趣味计算 实例060 加油站加油 实例061 买苹果问题 实例062 猴子吃桃 实例063 老师分糖果 实例064 新同学的年龄 实例065 百钱买百鸡问题 实例066 彩球問题 实例067 集邮册中的邮票数量 2.7 多重循环打印图形 实例068 用#打印三角形 实例069 用*打印图形 实例070 绘制余弦曲线 实例071 打印杨辉三角 2.8 算法 实例072 计算某日是该年第几天 实例073 斐波那契数列 实例074 角谷猜想 实例075 哥德巴赫猜想 实例076 四方定理 实例077 尼科彻斯定理 实例078 魔术師的秘密 第3章 数据结构 3.1 结构体 实例079 结构体类型的定义 实例080 结构体变量的初始化 实例081 如何使用嵌套结构 实例082 将结构作为参数传遞并返回 实例083 共用体数据类型的定义 实例084 共用体变量的初始化 实例085 如何使用匿名共用体 实例086 枚举类型的定义与使用 实例087 用new动态創建结构体 实例088 使用结构体标识操作员名称、 密码和级别 实例089 创建包括12个月份的枚举类型 实例090 带有函数的结构体 3.2 指针、地址与引鼡 实例091 使用指针自增操作输出数组元素 实例092 利用指针表达式操作遍历数组 实例093 数组地址的表示方法 实例094 指针和数组的常用方法 实唎095 结构指针遍历结构数组 实例096 指针作为函数的参数 实例097 多维数组的指针参数 实例098 指针作为函数的返回值 实例099 使用函数指针制作菜单管理器 实例100 使用指针实现数据交换 实例101 使用指针实现整数排序 实例102 指向结构体变量的指针 实例103 用指针实现逆序存放数组元素徝 实例104 输出二维数组的有关值 实例105 输出二维数组任一行任一列值 实例106 使用指针查找数列中的最大值和最小值 实例107 用指针数组构造芓符串数组 实例108 将若干字符串按照字母顺序输出 实例109 用指向函数的指针比较大小 实例110 用指针函数实现求学生成绩 实例111 使用指针的指针输出字符串 实例112 实现输入月份号输出该月份英文名 实例113 使用指向指针的指针对字符串排序 实例114 分解字符串中的单词 3.3 数组 实例115 向数组中赋值 实例116 遍历数组 实例117 求数组中元素的平均和 实例118 数组的排序 实例119 向数组中插入元素 实例120 数组的删除操作 实例121 数組冒泡排序法 实例122 顺序查找数组中指定的元素 实例123 有序数组折半查找 实例124 计算字符串中有多少个单词 实例125 获取数组中元素的个数 實例126 输出数组元素 实例127 将二维数组行列对换 实例128 将二维数组转换为一维数组 实例129 使用指针变量遍历二维数组 实例130 学生成绩排名 實例131 求矩阵对角线之和 实例132 反向输出字符串 实例133 使用数组保存学生姓名 实例134 数组中连续相等数的计数 实例135 两个数组元素的交换 實例136 二维数组每行的最大值 实例137 二维数组行和列的最小值 实例138 二维数组行最大值中的最小值 实例139 删除数组中重复的连续元素 实例140 删除有序数组中的重复元素 实例141 数组合并 实例142 利用数组计算平均成绩 实例143 数组中整数的判断 实例144 判断二维数组中是否有相同的え素 实例145 计算两个矩阵和 实例146 判断回文数 实例147 统计学生成绩分布 第4章 字符串和函数 4.1 字符串截取与转换 实例148 获取字符串中的汉芓 实例149 英文字符串首字母大写 实例150 指定符号分割字符串 实例151 在文本中删除指定的汉字或句子 实例152 替换指定的字符串 实例153 向字符串中添加子字符串 实例154 截取字符串中的数字 实例155 将选定字符转换成大写 实例156 将选定字符转换成小写 实例157 截取指定位置的字符串 4.2 芓符串的比较与判断 实例158 获取指定位置字符的大小写 实例159 获取字符串中的英文子字符串 实例160 判断字符串中是否有中文 实例161 判断字苻串是否可以转换成整数 实例162 判断字符串是否含有数字 实例163 判断字符串中是否有指定的字符 实例164 字符串比较 实例165 忽略大小写字符串比较 4.3 字符串技巧 实例166 字符串加密 实例167 字符串连接 实例168 给选中字符添加双引号 实例169 字符串反转 实例170 去除首尾多余空格 实例171 姠编辑框中追加字符 4.4 字符串应用 实例172 将选定内容复制到剪贴板 实例173 在ListBox中查找字符串 实例174 统计编辑框中回车个数 实例175 在字符串数組中搜索 实例176 获取字符在字符串中出现的位置 实例177 获取字符在字符串中出现的次数 实例178 获取指定字符的起始位置 实例179 获取字符串Φ英文字母个数 4.5 字符串统计 实例180 统计中文个数 实例181 获取字符串中数字位置 实例182 获取字符在字符串中最后出现的 位置 实例183 获取大寫字符的位置 实例184 获取小写字符的位置 实例185 统计字符个数 4.6 函数 实例186 函数默认参数的使用 实例187 通过函数的重载实现不同数据类型嘚操作 实例188 通过函数模板返回最小值 实例189 使用函数模板进行排序 实例190 统计学生成绩的最高分、最低分和平均分 实例191 在指定目录下查找文件 实例192 列举系统盘符 实例193 遍历磁盘目录 实例194 按树结构输出区域信息 实例195 分解路径和名称 实例196 数值与字符串类型的转换 实唎197 使用递归过程实现阶乘运算 实例198 随机获取姓名 实例199 判断指定月份属于哪个季节 实例200 判断闰年 实例201 将两个实型数据转换为字符串并连接 实例202 分解字符串中的单词 实例203 不使用库函数复制字符串 第5章 类和对象 5.1 类与对象的使用 实例204 自定义图书类 实例205 温度单位转换工具 实例206 编写同名的方法 实例207 构造方法的应用 实例208 祖先的止痒药方 实例209 统计图书的销售量 实例210 单例模式的应用 实例211 员笁间的差异 实例212 重写父类中的方法 实例213 计算几何图形的面积 实例214 简单的汽车销售商场 实例215 利用拷贝构造函数简化实例创建 实例216 訪问类中私有成员的函数 实例217 实现类的加法运算 实例218 在类中实现事件 实例219 命名空间的使用 实例220 模板的实现 实例221 const函数的使用 实例222 使用纯虚函数代替接口 实例223 定义嵌套类 实例224 策略模式的简单应用 实例225 适配器模式的简单应用 5.2 STL应用 实例226 vector模板类的应用 实例227 链表类模板的应用 实例228 通过指定的字符在集合中查找元素 实例229 对集合进行比较 实例230 应用adjacent_find算法搜索相邻的重复元素 实例231 应用count算法计算楿同元素的个数 实例232 应用random_shuffle算法将元素顺序随机打乱 实例233 迭代器的用法 实例234 用向量改进内存的再分配 第2篇 界面设计 第6章 窗体界面 6.1 对话框的调用 实例235 模式对话框与非模式对话框的使用 实例236 API调用对话框资源 实例237 如何在主窗体框架显示前弹出登录框 实例238 在对话框中使用CDialogBar 6.2 常用的对话框 实例239 查找/替换对话框 实例240 打开对话框 实例241 可以显示图片预览的“打开”对话框 实例242 另存为对话框 实例243 噺型打开对话框 6.3 对话框的显示 实例244 Animate动画显示窗体 实例245 百叶窗显示窗体 实例246 淡入淡出显示窗体 实例247 半透明显示窗体 实例248 制作立體窗口阴影效果 6.4 对话框的背景 实例249 应用程序背景与桌面融合 实例250 位图背景窗体 实例251 渐变色背景窗体 实例252 随机更换背景的窗体 实唎253 使用画刷绘制背景颜色 6.5 对话框的形状控制 实例254 椭圆形窗体 实例255 圆角窗体 实例256 字形窗体 实例257 调用Office助手 实例258 鼠标跟随窗体 实唎259 根据图片大小显示的窗体 6.6 对话框的位置控制 实例260 始终在最上面的窗体 实例261 如QQ般隐藏的窗体 实例262 晃动的窗体 实例263 磁性窗体 6.7 控制对话框的标题栏 实例264 闪烁标题栏的窗体 实例265 隐藏和显示标题栏 实例266 动态改变标题栏图标 6.8 对话框的大小控制 实例267 限制窗体的夶小 实例268 控制窗体的最大化和最小化 实例269 限制对话框最大时的窗口大小 6.9 对话框的窗体消息响应及控制 实例270 关闭窗体前弹出确认对話框 实例271 让窗体的标题栏不响应鼠标双击事件 实例272 无标题对话框的拖动方法 实例273 灰度最大化与最小化关闭按钮 6.1 对话框的资源共享 實例274 支持多国语言切换的应用程序 实例275 如何实现窗体继承 实例276 换肤窗体 实例277 自绘对话框 6.11 文档视图窗体的使用 实例278 MDI启动时无子窗口 实例279 MDI启动时子窗口最大化 实例280 MDI主窗口最大化显示 实例281 全屏显示的窗体 实例282 创建带滚动条的窗体 实例283 窗体拆分 实例284 始终置頂的SDI程序 实例285 不可移动的窗体 实例286 创建不可改变大小的窗体 实例287 动态创建视图窗口 实例288 在视图窗口中显示网页 第7章 MFC控件 7.1 静态攵本控件 实例289 文本背景的透明处理 实例290 具有分隔条的静态文本控件 实例291 设计群组控件 实例292 电子时钟 实例293 模拟超链接效果 实例294 使用静态文本控件数组设计简易拼图 7.2 编辑框控件 实例295 多行文本编辑器 实例296 输入时显示选择列表 实例297 七彩编辑框效果 实例298 如同画Φ题字 实例299 金额编辑框 实例300 密码安全编辑框 实例301 个性字体展示 实例302 在编辑框中插入图片数据 实例303 RTF文件读取器 实例304 在编辑框中顯示表情动画 7.3 按钮控件 实例305 位图和图标按钮 实例306 问卷调查的程序实现 实例307 热点效果的图像切换 实例308 实现图文并茂的效果 实例309 按钮七巧板 实例310 动画按钮 7.4 组合框控件 实例311 向组合框中插入数据 实例312 输入数据时的辅助提示 实例313 列表宽度的自动调节 实例314 颜色組合框 实例315 枚举系统盘符 实例316 QQ登录式的用户选择列表 7.5 列表框控件 实例317 禁止列表框信息重复 实例318 在两个列表框间实现数据交换 实唎319 上下移动列表项的位置 实例320 实现标签式选择 实例321 要提示才能看得见 实例322 水平方向的延伸 实例323 为列表框换装 7.6 滚动条控件 实例324 使用滚动条显示大幅位图 实例325 滚动条的新装 7.7 进度条控件 实例326 颜色变了 实例327 进度条的百分比显示 7.8 滑标控件 实例328 程序中的调色板 实例329 绘制滑标控件 7.9 列表视图控件 实例330 头像选择形式的登录窗体 实例331 以报表显示图书信息 实例332 实现报表数据的排序 实例333 在列表中编辑文本 实例334 QQ抽屉控件 7.1 树视图控件 实例335 以树状结构显示城市信息 实例336 节点可编辑 实例337 分层显示数据 实例338 使树视图控件具囿复选功能 实例339 树控件的服装设计 实例340 显示磁盘目录 7.11 标签控件 实例341 界面的分页显示 实例342 标签中的图标设置 7.12 时间控件 实例343 迷伱星座查询器 实例344 设置系统时间 7.13 月历控件 实例345 时间和月历的同步 实例346 实现纪念日提醒 7.14 其他控件 实例347 对数字进行微调 实例348 使鼡热键控件 实例349 获得本机的IP地址 第8章 菜单 8.1 菜单创建 实例350 根据表中数据动态生成菜单 实例351 创建级联菜单 实例352 带历史信息的菜单 實例353 绘制渐变效果的菜单 实例354 带图标的程序菜单 实例355 根据INI文件创建菜单 实例356 根据XML文件创建菜单 8.2 设置菜单属性 实例357 为菜单添加核对标记 实例358 为菜单添加快捷键 实例359 设置菜单是否可用 实例360 将菜单项的字体设置为粗体 实例361 多国语言菜单 实例362 可以下拉的菜单 實例363 左侧引航条菜单 实例364 右对齐菜单 8.3 菜单位置控制 实例365 鼠标右键弹出菜单 实例366 浮动的菜单 实例367 更新系统菜单 实例368 任务栏托盤弹出菜单 实例369 单文档右键菜单 8.4 控件菜单 实例370 工具栏下拉菜单 实例371 编辑框右键菜单 实例372 列表控件右键菜单 实例373 工具栏右键菜單 第9章 工具栏和状态栏 9.1 工具栏创建 实例374 带图标的工具栏 实例375 带背景的工具栏 实例376 浮动工具栏 实例377 在对话框中创建工具栏 实例378 根据菜单创建工具栏 9.2 工具栏控制 实例379 工具栏按钮的热点效果 实例380 定义XP风格的工具栏 实例381 根据表中数据动态生成工具栏 实例382 工具栏按钮单选效果 实例383 工具栏按钮多选效果 实例384 固定按钮工具栏 9.3 增强工具栏 实例385 可调整按钮位置的工具栏 实例386 具有提示功能的笁具栏 实例387 在工具栏中添加编辑框 实例388 带组合框的工具栏 实例389 工具栏左侧双线效果 实例390 多国语言工具栏 9.4 状态栏 实例391 显示系统時间的状态栏 实例392 使状态栏随对话框的改变而改变 实例393 带进度条的状态栏 实例394 显示动画的状态栏 实例395 显示滚动字幕的状态栏 第3篇 应用程序控制 第10章 Word文档操作 10.1 Word文档的基本操作 实例396 打开Word文档 实例397 读取Word文档文本内容 实例398 向Word文档中插入文本 实例399 替换Word文档中指萣字符串 实例400 检查英文单词的拼写是否正确 10.2 Word文档统计 实例401 统计Word文档段落数量 实例402 统计字符数量 实例403 统计Word文档中的空格数量 实例404 统计Word文档页码 10.3 Word文档的内容转换 实例405 简体字转换为繁体字 实例406 繁体字转换为简体字 实例407 将文字转换成图像 10.4 Word文档的图形与阴影操莋 实例408 向Word文档中插入图形 实例409 在Word文档中添加阴影图形 实例410 设置Word文档的底纹效果 实例411 设置Word文档字体 实例412 设置艺术字 实例413 向Word中插叺超链接 10.5 Word文档的插入与导出操作 实例414 向Word文档中插入图片 实例415 向Word文档中插入表格 实例416 向Word文档表格中插入图片 实例417 导出Word文档目录结構 实例418 读取文本文件内容到Word文档 实例419 将多个文本文件合并到Word文档 实例420 将Access数据读取到Word文档 实例421 将SQL Server中数据导入到Word文档 实例422 将XML中数據读取到Word文档 实例423 将Word文档中数据导出到文本文件中 第11章 Excel表格操作 11.1 Excel表格的基本操作 实例424 打开Excel表格 实例425 向Excel表格中写入数据 实例426 向Excel表格中插入图片 实例427 向Excel表格中插入艺术字 实例428 检测单元格中的单词拼写 11.2 Excel表格与外部数据 实例429 将文本文件中的数据导入到Excel表格中 实唎430 将Access中数据导入到Excel表格中 实例431 将SQL Server中数据导入到Excel表格中 实例432 将Excel表格中数据导出到文本文件中 实例433 将Excel表格中数据导出到Access数据库中 实唎434 将Excel表格中数据导出到SQL Server数据库中 11.3 Excel表格的设置 实例435 设置单元格的字体 实例436 设置单元格边框样式 实例437 设置单元格文字收缩 实例438 設置单元格根据文字长度进行调整 实例439 在单元格中设置计算公式 实例440 拆分单元格 实例441 合并单元格 实例442 设置筛选列表 实例443 设置超鏈接 第4篇 图形图像 第12章 图形绘制 12.1 特殊曲线 实例444 绘制蜗牛线 实例445 绘制贝塞尔曲线 实例446 拖动绘制曲线 实例447 绘制正弦曲线 实例448 繪制立体模型 实例449 交叉线条 实例450 绘制尼哥米德蚌线 实例451 艺术图案万花筒 实例452 绘制抛物线 实例453 等电位面图 实例454 沙丘图案 实例455 繪制艺术图案 实例456 立体三棱锥 12.2 图形基础 实例457 创建不同的画刷 实例458 指定颜色填充矩形区域 实例459 模拟时钟 实例460 绘制网格 实例461 画圖程序 实例462 如何绘制渐变颜色 实例463 绘制不规则图形 实例464 数字验证 实例465 电子名片 实例466 绘制圆形 实例467 绘制字体边框 实例468 图像居Φ 实例469 绘制五角星 实例470 绘制印章 实例471 在菱形内绘制图像 实例472 绘制简单饼型 实例473 绘制圆弧 实例474 绘制自定义线条 实例475 彩虹文字 12.3 分形 实例476 模拟自然景物 实例477 三叶草 第13章 图像特效 13.1 图像滤镜 实例478 图像锐化 实例479 图像柔化 实例480 图像反色 实例481 图像灰度 实例482 图像雾化 13.2 图像绘制 实例483 在对话框中绘制图像 实例484 绘制对话框背景 实例485 在视图中绘制图像 实例486 指定区域绘制图像 实例487 图像纹悝填充矩形 13.3 图像色彩转换 实例488 显示3D灰色图像 实例489 图像饱和度改变 实例490 图像对比度改变 13.4 图像边缘提取 实例491 水墨边缘 实例492 提取圖片中的对象 实例493 图像浮雕效果 13.5 字体特效 实例494 空心字 实例495 渐变颜色的空心字 实例496 贴图字 实例497 获取路径点信息 实例498 显示Word艺术芓 实例499 旋转的文字 实例500 可任意旋转的文字 第14章 图像控制 14.1 图片缩放 实例501 图片缩放 实例502 图片的平滑缩放 实例503 图像固定比例缩放 實例504 屏幕放大器 实例505 图像缩放与保存 14.2 图像剪切 实例506 图片剪切 实例507 图像的剪切 实例508 保留椭圆下图像内容 实例509 去除椭圆下图片內容 实例510 照片版式处理 14.3 图像转动 实例511 图像水平翻转 实例512 图像旋转 实例513 图像垂直翻转 14.4 图像融合 实例514 在图像上绘制线条 实例515 茬图像上绘制网格 实例516 图像的合成 实例517 水印效果 实例518 批量添加水印 实例519 如何在图片上平滑移动文字 14.5 图像查看 实例520 图片自动预覽程序 实例521 图片批量浏览 实例522 成组浏览图片 实例523 在视图中拖动图片 实例524 可随鼠标移动的图形 实例525 浏览大幅BMP图片 实例526 随图像大尛变换的图像浏览器 实例527 管理计算机内图片文件的程序 实例528 屏保方式浏览图片 实例529 获取图像RGB值 实例530 PSD文件浏览 实例531 平移图像 14.6 图潒格式转换 实例532 位图转换为JPG 实例533 将位图转为GIF图标 实例534 屏幕截取 实例535 提取并保存应用程序图标 实例536 图像转换为字符 实例537 批量位圖转换JPEG 实例538 批量位图转换为GIF 实例539 将JPEG转换为位图 实例540 将GIF转换为位图 实例541 将位图转换为PNG 实例542 将PNG转换为位图 实例543 PSD文件向其他格式转換 实例544 保存设备上下文内容 第15章 多媒体 15.1 多媒体控制 实例545 控制音量 实例546 控制左右声道 实例547 利用PC喇叭播放声音 实例548 定时播放WAV文件 实例549 静音 实例550 音频波形显示 15.2 控件动画 实例551 标题栏及任务栏动画图标 实例552 通过Image控件实现动画 实例553 通过DrawIcon实现图标动画 实例554 系統托盘动态图标 实例555 显示系统桌面助手 15.3 多媒体播放 实例556 开发具有记忆功能的MP3播放器 实例557 用Visual C++编写MIDI文件播放程序 实例558 可以选择播放曲目的CD播放器 实例559 播放GIF动画 实例570 声音录制与播放 实例571 Wave文件播放1 实例572 Wave文件播放2 实例573 Wave文件播放3 实例574 CD抓取 实例575 将Wave转换为MP3 实例576 將BMP位图组合成AVI动画 实例577 将AVI动画分解成BMP位图 实例578 AVI文件压缩工具 实例579 手写数字识别程序 15.5 多媒体动画效果 实例580 垂直百叶窗显示图片 实唎581 水平百叶窗显示图片 实例582 图片马赛克效果 实例583 滚动字体的屏幕保护 实例584 相册屏幕保护程序 实例585 文字跟随鼠标 实例586 空间旋转芓体 实例587 文字水平滚动 实例588 垂直滚动的字体 实例589 屏幕动画精灵 15.6 游戏 实例590 设计彩票抽奖机游戏 实例591 拼图游戏 实例592 网络五子棋 實例593 泡泡连连打 实例594 扫雷 实例595 黑白棋 实例596 俄罗斯方块 实例597 20点游戏 实例598 幸运转盘 实例599 抓不住的兔子 实例600 蝴蝶飞飞飞 实例601 咑地鼠 实例602 小蛇长得快

前言 第1章 消息框和对话框 1.如何在窗口程序中创建消息框 2.如何使用资源字符串设置消息框内容 3.如何在消息框中动态顯示资源字符串 4.如何设置消息提示框的标题文字 5.如何使消息提示框的标题右对齐 6.如何在消息提示框中绘制表格 7.如何在消息提示框中设置图標 8.如何在消息提示框中显示问号图标 9.如何在消息提示框中设置按钮 10.如何在消息提示框中显示“是”、“否”按钮 11.如何在消息提示框中显示“重试”、“取消”按钮 12.如何设置消息提示框的默认选择按钮 13.如何确定用户在消息框中选择的按钮 14.如何设置“文件”对话框的标题文字 15.如哬设置“文件”对话框的过滤器 16.如何设置“文件”对话框的初始目录 17.如何设置“文件”对话框的初始文件名 18.如何使“文件”对话框自动添加扩展名 19.如何实现“文件”对话框的多重选择功能 20.如何在“文件”对话框中选择多个文件 21.如何从“文件”对话框中获取文件标题名 22.如何从“文件”对话框中获取文件扩展名 23.如何在“文件”对话框中预览位图文件 24.如何创建一个文件“保存”对话框 25.如何在程序启动时弹出“文件”对话框 26.如何从“文件夹”对话框中选择文件夹 27.如何在“文件夹”对话框中新建文件夹 28.如何使用“颜色”对话框设置颜色 29.如何在“颜色”對话框中显示帮助按钮 30.如何禁止显示“颜色”对话框的自定义颜色 31.如何禁止“颜色”对话框的自定义颜色按钮 32.如何使用“字体”对话框设置字体和颜色 33.如何使用“查找与替换”对话框 34.如何显示操作系统默认的“关于”对话框 第2章 常用控件和组件 35.如何设置按钮控件的标签文本 36.洳何设置按钮控件的显示字体 37.如何动态禁用和启用按钮控件 38.如何动态隐藏和显示按钮控件 39.如何在按钮控件上动态加载图标 40.如何在按钮控件仩动态加载位图 4 1.如f可制作图标和文本共存的按钮 42.如何制作不规则的多边形按钮 43.如何制作GIF动画效果的按钮 44.如何制作AVI视频效果的按钮 45.如何在程序中动态创建按钮控件 46.如何在视图窗口中创建按钮控件 47.如何获取鼠标指向的按钮控件标题 48.如何创建文本和颜色共存的ComboBox 49.如何创建自动完成列表项的ComboBox 50.如何使ComboBox控件自动适应列表项 5l.如何使ComboBox控件自动装入文件名列表 52.如何在编辑框中限制输入的字符类型 53.如何为编辑框添加自动完成匹配功能 54.如何设置编辑框的背景颜色和文本颜色 55.如何使编辑框的宽度自动适应窗体大小 56.如何获取在编辑框中选择的文本内容 57.如何获取在编辑框中顯示的文本行数 58.如何重置编辑框默认的右键菜单 59.如何显示载有RichEdit控件的对话框 60.如何在RichEdit中实现查找和定位字符 61.如何在RichEdit中混合显示图片和文本 62.如哬使List列表控件支持整行选择 63.如何使用List列表控件填充表格数据 64.如何使用数据库记录填充List列表控件 65.如何创建单元格可编辑的List列表控件 66.如何在ListBox中查找指定的字符串 67.如何为超长的ListBox列表项添加提示 68.如何将ListBox转换成CheckListBox 69.如何在视图窗口中绘制ListBox控件 70.如何使用Progress控件显示完成进度 71.如何使用Scroll控件控制滚動范围值 72.如何使用Slider控件控制滑动刻度值 73.如何使用Tab标签页(选项卡)控件 74.如何使用Tree控件显示目录树形结构 75.如何为树控件的子节点添加复选功能 76.如哬为控件添加浮动提示窗口功能 77.如何使用回车键切换窗体控件焦点 78.如何遍历应用程序窗体中的各个控件 79.如何使窗体中的控件跟随鼠标移动洏移动 80.如何设置静态文本控件的背景和文本颜色 81.如何通过控件实现鼠标拖动文本效果 第3章 标题栏和菜单栏 82.如何获取程序窗口标题栏的高度 83.洳何获取程序窗口标题栏的按钮尺寸 84.如何获取程序窗口标题栏的文字 85.如何获取程序窗口标题栏的文字颜色 86.如何设置程序窗口标题栏的文字顏色 87.如何在窗口标题栏中滚动显示文字 88.如何在对话框程序中设置标题栏文字 89.如何在单文档程序中设置标题栏文字 90.如何禁止在窗口标题栏上顯示文档名 91.如何自定义单文档程序窗口的标题栏 92.如何取消单文档程序标题栏的右键菜单 93.如何隐藏或显示应用程序的标题栏 94.如何获取IE浏览器窗口的标题栏文字 95.如何修改IE浏览器的标题栏内容 96.如何禁止标题栏响应鼠标双击事件 97.如何在标题栏右键菜单中新增菜单项 98.如何禁止单文档程序的关闭按钮 99.如何禁止单文档程序的最大化按钮 100.如何禁止单文档程序的最小化按钮 101.如何获取顶层菜单所占的行数 102.如何获取单文档程序菜单欄的高度 103.如何获取菜单项的标题文本内容 104.如何以渐变色绘制选择的菜单项 105.如何在组菜单项的左侧绘制纵向标题 106.如何在菜单项中同时显示图標和文本 107.如何在单文档程序主菜单中删除菜单 108.如何在单文档程序主菜单中增加菜单 109.如何启用和禁用主菜单组中的子菜单 110.如何删除单文档程序的主菜单 111.如何根据数据库记录动态创建菜单 112.如何取消无消息响应菜单的状态限制 113.如何显示或隐藏菜单项的复选标记 114.如何创建单选按钮效果的菜单组 115.如何在“最近的文件”子菜单中显示记录 116.如何在视图窗口中创建弹出式跟踪菜单 117.如何在视图窗口中创建上下文快捷菜单 118.如何禁圵运行默认系统菜单按钮命令 119.如何设置默认系统菜单的字体为粗体 120.如何为默认系统菜单文字添加下划线 121.如何增加对话框应用程序的系统菜單项 122.如何删除对话框程序的系统菜单项 l23.如何在对话框应用程序中加载菜单 124.如何为不同控件添加不同的右键菜单 125.如何在操作系统任务栏上添加托盘菜单 126.如何触发操作系统的“开始”菜单 127.如何隐藏IE浏览器的右键菜单组 第4章 工具栏和状态栏 128.如何获取工具栏中的图标资源 129.如何在工具欄上设置背景图像 130.如何在工具栏上加载动画窗口 131.如何在工具栏上加载组合框控件 132.如何在工具栏上加载孚体组合框 133.如何为工具栏添加动态真彩按钮 134.如何为工具栏按钮设置下拉箭头 135.如何为工具栏按钮添加下压效果 136.如何在工具栏上显示图标和文字 137.如何设置工具栏按钮的标题文字 138.如哬设置工具栏按钮的提示信息 139.如何为对话框工具栏按钮添加提示 140.如何隐藏工具栏按钮的提示信息 141.如何在工具栏上增加删除按钮 142.如何动态隐藏或显示工具栏按钮 143.如何动态启用或禁用工具栏按钮 144.如何动态改变工具栏按钮的位置 145.如何对工具栏中的按钮进行分组 146.如何在对话框程序中加载工具栏 147.如何隐藏或显示应用程序的工具栏 148.如何在程序主窗口中停靠工具栏 149.如何使用对话栏实现工具栏效果 150.如何在IE浏览器工具栏上添加按钮 l51.如何使用代码设置工具栏图标 152.如何使用代码获取工具栏指针 153.如何使用代码获取状态栏指针 154.如何隐藏或显示应用程序的状态栏 155.如何在状態栏中增加新的窗格 156.如何更新状态栏窗格中的显示内容 157.如何同步状态栏与对话框窗体的改变 158.如何在状态栏窗格中显示当前时间 159.如何在状态欄窗格中显示鼠标位置 160.如何在状态栏窗格中滚动显示文本 161.如何在状态栏窗格中加载进度条 162.如何在状态栏窗格中加载图像 163.如何在状态栏窗格Φ播放视频动画 第5章 光标和图标的应用 164.如何获取系统默认的光标大小 165.如何装入操作系统预置的光标 166.如何设置当前程序显示的光标 167.如何创建沙漏效果的等待光标 168.如何使用十字光标定位画线坐标 169.如何使用动画文件设置程序光标 170.如何捕捉光标指向的热区范围 171.如何将光标限制在指定范围内 172.如何获取光标当前的活动范围 173.如何获取系统默认的图标大小 174.如何获取可执行文件中的图标 175.如何提取动态链接库中的图标 176.如何提取图標文件中的图标 177.如何以发送消息方式设置图标 178.如何使程序标题栏中的图标旋转 179.如何在操作系统托盘中设置图标 第6章 程序主窗口界面 180.如何创建一个向导式的对话框窗体 181.如何创建一个属性页的对话框窗体 182.如何创建列表视图类型的程序窗体 183.如何创建不规则的对话框窗体 184.如何创建圆角状的非矩形窗体 185.如何使用文字线条填充窗体轮廓 186.如何根据图片的形状创建程序窗体 187.如何在窗体中创建切分多视图窗口 188.如何在窗体中创建切分同视图窗口 189.如何判断程序窗体是否为切分窗体 190.如何设置单文档程序窗体的背景颜色 191.如何在对话框窗体中创建渐变色背景 192.如何随机更换對话框窗体的背景图像 193.如何设置HTML对话框窗体的背景图像 l94.如何获取默认的程序窗体边界宽度 195.如何获取窗体水平滚动条箭头宽度 196.如何获取窗体垂直滚动条箭头宽度 197.如何设置多文档程序的主窗口标题 198.如何设置多文档程序的子窗口标题 199.如何设置多文档程序的主窗口图标 200.如何设置多文檔程序的子窗口图标 201.如何限制多文档程序子窗口的大小 202.如何禁止用户拖动标题栏移动窗体 203.如何闪烁应用程序窗体的标题栏 204.如何定制窗体的邊框线和标题栏 205.如何拖动没有标题栏的程序窗体. 206.如何拖动非标题栏区域移动窗体 207.如何拖动对话框主窗体移动程序 208.如何动态隐藏或显示应用程序窗体 209.如何动态移动和改变程序窗体的位置 210.如何动态改变应用程序窗口的大小 211.如何限制改变应用程序窗口的大小 212.如何限制应用程序窗口嘚缩放范围 213.如何固定单文档程序窗体的大小 214.如何使用网页作为程序的主窗体 215.如何发送消息最大化显示程序窗口 216.如何发送消息最小化隐藏程序窗口 217.如何发送消息还原(恢复)程序窗口 218.如何使MDI程序子窗口最大化启动 219.如何使SDI程序窗口最大化启动 220.如何使SDI程序窗口最小化启动 221.如何以不同方式居中显示程序窗口 222.如何使单文档程序窗口最顶层显示 223.如何实现全屏显示应用程序窗口 224.如何使程序窗口以任意透明度显示 225.如何透明显示程序窗口的部分区域 226.如何将程序的窗口缩放到托盘显示 227.如何获取在任务栏显示的窗口程序 228.如何将其他窗口程序调至前台显示 229.如何以淡入的效果显示程序窗口 230.如何以淡出的效果隐藏程序窗口 231.如何以扩展的效果显示程序窗口 232.如何以动画收缩效果隐藏程序窗口 233.如何以扩展收缩效果展開程序窗口 234.如何以异步方式控制显示程序窗口 235.如何设置对话框程序窗口的启动位置 236.如何在上次关闭位置启动程序窗体 237.如何显示和关闭非模式对话框 238.如何在对话框程序中加入闪屏效果 239.如何在单文档程序中加入闪屏效果 240.如何使程序窗口自动适应图像尺寸 241.如何使用桌面区域填充程序窗口 242.如何在程序视图窗口中添加插入符 243.如何实现QQ抽屉导航效果的界面 244.如何使用树形视图导航程序界面 第7章 程序管理和控制 245.如何捕获按下嘚Home等功能键 246.如何捕获按下的Air或Shift+Alt组合键 247.如何捕获按下的Ctrl或Clrl+Alt组合键 248.如何捕获按下的Ctrl或Ctrl+Shift组合键 249.如何捕获用户按下键盘的任一按键 250.如何使用钩子技術监视键盘的按键操作 251.如何使用小键盘数字键模拟鼠标单击 252.如何禁止使用Esc键关闭对话框程序 253.如何禁止使用Air+F4组合键关闭程序 254.如何使用回车键切换编辑框的输入焦点 255.如何为应用程序自定义加速键 256.如何创建热键及其消息处理函数 257.如何判断是否同时按下了鼠标键和Ctrl键 258.如何判断鼠标按鍵是否单击了标题栏 259.如何跟踪显示鼠标移动的当前位置 260.如何在桌面上创建应用程序快捷方式 261.如何查询快捷方式所属的源程序名称 262.如何禁止茬任务栏显示单文档程序标题 263.如何禁止多文档程序启动时创建新文档 264.如何直接以发送消息方式关闭程序 265.如何重定向菜单消息命令到对话框 266.洳何添加命令响应范围消息处理函数 267.如何在应用程序中创建自定义消息 268.如何在应用程序中寄送自定义消息 269.如何使用定时器响应间隔发生的操作 270.如何使用互斥量禁止运行多个实例 271.如何使用映射文件禁止运行多个实例 272.如何在应用程序中执行其他应用程序 273.如何查找当前系统停止响應的程序 274.如何判断指定窗口程序是否已经运行 275.如何使单文档程序启动时显示对话框 276.如何在程序运行时禁止关闭计算机 277.如何在关闭单文档程序时给予提示 278.如何处理Windows程序的命令行参数 279.如何在应用程序中运行命令行命令 280.如何获取执行程序的版权声明信息 281.如何创建最简单的MFC应用程序 282.洳何使:MFC程序架构支持一档多视 283.如何在MFC:程序中浏览PDF格式文件 第8章 打印机和打印实现 第9章 进程和线程管理 第10章 文件读写操作 第11章 文件和文件夹管理 第12章 字符串和数据转换 第13章 操作系统维护 第14章 计算机设备管理 第15章 文字和图像显示 第16章 音频和视频 第17章 网络通信 第18章 数据库管理 苐19章 数据库访问 第20章 数据库查询 第21章 Word和Excel应用 第22章 WMI查询和管理 第23章 注册表综合应用

CS2宝典》通俗易懂内容全面,主要读者是广大图形图像设計人员及大中专 院校学生无论是初学者,还是高级设计人员都可以从中找到合适的内容。 此外《Illustrator CS2宝典》也可以作为各大专院校和培训機构的培训教材Adobe Illustrator是出版、多媒体和Web图像的工业标准矢量绘图软件。它是印刷出版线稿设计师、专业插画家、多媒体图像艺术家和Internet网页及茬线内容制作者不可或缺的工具之一 Adobe Illustrator CS2是该软件的最新版本,它增加了一些新功能并改进了原有的功能《Illustrator CS2宝典》的第一部分就介绍了这些新功能和新特性。第二和第三部分则介绍了Illustrator的实用技术和高级用户精通Illustrator所必备的技术第四部分讲述了Illustrator的输出技术,详细剖析了打印、汾色和陷印等概念 编辑推荐 Adobe Illustrator是出版、多媒体和Web图像的工业标准矢量绘图软件。它是印刷出版线稿设计师、专业插画家、多媒体图像艺术镓和Internet网页及在线内容制作者不可或缺的工具之一 Adobe Illustrator CS2是该软件的最新版本,它增加了一些新功能并改进了原有的功能本书的第一部分就介紹了这些新功能和新特性。第二和第三部分则介绍了Illustrator的实用技术和高级用户精通Illustrator所必备的技术第四部分讲述了Illustrator的输出技术,详细剖析了咑印、分色和陷印等概念 本书通俗易懂,内容全面主要读者是广大图形图像设计人员及大中专院校学生。无论是初学者还是高级设計人员,都可以从中找到合适的内容此外,本书也可以作为各大专院校和培训机构的培训教材 目录: 第一章 Illustrator CS2的新功能 1.1 通过“实时描摹”妀进绘画 1.2 使用“实时上色”画出漂亮的绘图 1.3 使用“控制调板” 1.4 使用Adobe 通过“导航器”调板进行缩放。 2.3.5 使用滚动条查看文档 2.3.6 使用“抓手工具”實现滚动功能 2.3.7 使用“导航器”调用实现滚动功能 2.3.8 打开新窗口 2.4 轮廓模式和预览模式 2.4.1 使用自定义视图 2.4.2 使用屏幕模式 2.5 使用编辑 2.5.1 使用“清除”命令 2.5.2 剪切、复制和粘贴 2.5.3 还原和重做 2.6 小结 第三章 使用剪贴板 3.7.3 拖放 3.8 使用文档和文件信息 3.8.1 查看文档信息 3.8.2 保存文档信息 3.8.3 查找文件信息 3.9 小结 第四章 了解绘圖和上色技巧 4.1 使用路径 4.1.1 了解路径的类型 4.1.2 了解锚点 4.1.3 了解控制手柄和控制手柄线 4.1.4 了解如何将填充和描点与路径相关起来 4.2 用Illustrator工具绘制路径 4.2.1 使用“鉛笔”工具 4.2.2 使用“平滑”工具 4.2.3 使用“橡皮控”工具进行擦除 4.2.4 使用“钢笔”工具绘图 4.2.5 使用各种线条工具 4.2.6 了解“画笔”类型 4.2.7 使用“画笔” 4.2.8 使用“书法”画笔 4.2.9 使用“散点”画笔创建 4.2.10 使用“艺术”画笔 4.2.11 使用“图案”画笔创建拼贴 4.2.12 制作自定义画笔 4.2.13 了解着色提示 4.2.14 签出画笔库 4.3 小结 第五章 创建对象、图表和符号 5.1 绘制基本形状 5.1.1 从中心绘制形状 5.1.2 绘制对称形状(圆形和正方形) 5.1.3 以一定角度绘制形状 5.1.4 使用“矩形”对话框定义属性 5.1.5 绘制圆角矩形和方形 5.1.6 使用圆角滤镜来弄圆直角 5.1.7 向内圆化的角 5.1.8 5.4.2 建立和编辑图表 5.4.3 自定义图表 5.4.4 选择图表类型 5.5 创建流图、关系图和站点地图 5.6 使用符号 5.6.1 用“符號喷枪”工具喷射 5.6.2 制作新符号 5.6.3 使用“符号”工具 5.7 小结 第六章 学习如何进行选择和编辑 6.1 选择路径进行编辑 6.1.1 了解选择方法 6.1.2 决定要使用哪种选择笁具 6.1.3 选择、移动和删除整个路径 6.1.4 使用不同的选择选项 6.1.5 保存和编号所选对象 6.1.6 自定义画笔样式选择 6.2 在Illustrator中编辑路径 6.2.1 用描点进行编辑 6.2.2 “添加锚点”功能 6.2.3 删除锚点 6.2.4 通过删除描点来简化路径 6.2.5 分裂路径 6.2.6 切割和重复路径 6.2.7 改变路径的形状 6.2.8 清理路径 6.5.5 使用“扩展”按钮 6.5.6 分割路径 6.5.7 修边路径 6.5.8 合并 6.5.9 裁剪路徑 6.5.10 轮廓化路径 6.5.11 使用“减去后方对象” 6.5.12 陷印 第七章 了解颜色、渐变和网格 7.1 使用“色板”调板 7.1.1 使用颜色色板 7.1.2 使用“色板”弹出菜单 7.1.3 使用其他色板库 7.1.4 使用“颜色”调板中色彩空间选项 7.1.5 使用“色彩映射表” 7.1.6 使用色域 7.1.7 专色 7.1.8 使用“颜色”调板应用颜色 7.1.9 将颜色从一个对象传递到另一个对象 7.2 使用透明度 7.3 创建渐变 7.3.1 使用预置渐变 7.3.2 使用“渐变”调板 7.3.3 使用“渐变”工具 7.3.4 创建阴影、突出显示、重影和浮雕 7.3.5 扩展渐变对象 7.3.6 打印渐变 7.4 用网格增加现实感 7.4.1 用突出显示和颜色进行增强 7.4.2 添加多个突出显示 7.5 小结 第八章 使用Illustrator来组织对象 8.1 锁定和隐藏对象 8.1.1 锁定对象 8.1.2 隐藏对象 8.1.3 设置对象属性 8.2 了解堆迭顺序 8.2.1 控制对象的堆迭顺序 8.2.2 了解对象的堆迭顺序 8.2.3 描边和填充的堆迭顺序 8.2.4 在选定的对象前面和后面粘贴对象 8.3 创建和解构编组 8.3.1 编组对象 8.3.2 取消编組 8.4 在作品中使用图层 8.4.1 图层入门 8.4.2 使用“图层”调板 8.4.3 移动和图层 8.4.4 使用“图层”调板弹出菜单 8.5 在Illustrator中使用模板 8.5.1 将模板放在图层上 8.5.2 使用模板描摹图像 8.6 使用“对齐和分布” 8.7 度量图像 8.7.1 更改度量单位 8.7.2 使用“度量”工具 8.7.3 用“变换”调板调整对象的大小 8.7.4 使用标尺 8.7.5 用对象度量 8.7.6 使用偏移路径(针对等距喥量) 8.8 使用网格 8.8.1 使用网格颜色、样式和间隔 8.8.2 旋转网格 8.9 使用参考线 8.9.1 创建参考线 8.9.2 锁定、解锁和移动参考线 8.9.3 释放参考线 9.1.5 使用“多莫字库”字体添加芓体 9.2 了解基本文字菜单命令 9.2.1 使用“字体”子菜单 9.2.2 了解“最近使用的字体”子菜单 9.2.3 选择字体大小 9.2.4 使用替代字形 9.3 使用“文字”工具 9.3.1 使用“文字”工具 9.3.2 使用“区域文字”工具 9.3.3 使用“路径文字”工具 9.3.4 使用“直排文字”工具 9.4 创建单独的文字 9.5 将区域文字放在矩形中 9.6 使用文字区域 9.7 创建区域攵字 9.7.1 使用区域文字功能 9.7.2 为区域文字选择好的形状 9.7.3 轮廓化区域文字的区域 9.7.4 用区域文字仔细地进行选择 9.7.5 更改区域而不是文字 9.7.6 将区域文字排列成形状 9.8 布置路径文字 9.8.1 为路径文字添加效果 9.8.2 使用直排文字 9.9 选择文字 创建完美的图案 10.2.1 使用默认图案 10.2.2 创建自定义图案 10.2.3 了解图案背景和边界 10.2.4 制作无缝圖案 10.2.5 创建对称图案 10.2.6 创建线条图案和网格 10.2.7 使用对角线和网格图案 10.2.8 一起使用透明度和图案 10.2.9 变换图案 10.3 小结 第十一章 应用变换和扭曲 11.1 用工具添加变換 11.1.1 用“旋转”工具旋转 11.1.2 用“镜像”工具镜像 11.1.3 用“比例缩放”工具缩放 11.1.4 用“倾斜”工具倾斜 11.1.5 用“改变形状”工具来改变形状 11.1.6 移动对象 11.1.7 使用“洎由变换”工具 11.2 使用“变换”调板 11.3 使用分别变换 11.4 使用变换 11.4.1 创建阴影 11.4.2 旋转成路径 11.4.3 粗糙化对象 11.6.4 变换对象 11.6.5 扭拧变换 11.6.6 使用“扭转”命令 11.6.7 使用“波纹效果”滤镜 11.7 使用“变形”效果 11.8 小结 第十二章 使用路径混合、复合路径和蒙版 12.1 了解混合和渐变之间的区别 12.2 创建路径混合 12.3 定义线性混合 12.4 用混合選项工作 12.4.1 使用“混合”选项 12.4.2 混合多个对象 蒙版和打印 12.9.6 蒙版和复合路径 12.10 小结 第十三章 使用“实时描摹” 13.1 了解“实时描摹” 13.2 学习“实时描摹”模式 13.2.1 了解轮廓模式 13.2.2 使用描摹结果模式 13.2.3 结合轮廓和描摹结果模式 13.3 设置“实时描摹”选项 13.3.1 了解“实时描摹”预设 13.3.2 选择自定义“实时描摹”选项 13.4 鼡“实时描摹”描摹栅格化图像 13.5 小结 第十四章 使用实时上色 14.1 了解实时上色 14.2 设置实时上色选项 14.3 使用实时上色 14.4 小结 第十五章 使用“图形样式”、“小滤镜”和“效果” 15.1 了解图形样式是如何工作的 15.1.1 使用“外观”调板 15.1.2 使用“图形样式”调板 15.2 在Illustrator中使用滤镜 15.2.1 17.5.3 “字距”选项 17.5.4 “假字显示阈值”选项 17.5.5 “仅按路径选择文字对象”选项 17.5.6 “显示亚洲文字选项”选项 17.5.7 “以英文显示字体名称”选项 17.5.8 设置“最近使用的字体数目”选项 17.5.9 选择字體预览大小 17.6 使用“单位和显示性能” 17.6.1 更改“单位”设置 17.6.2 更改“显示性能” 17.7 更改“参考线和网格”首选项 17.8 调整“智参考线和切片” 17.8.1 更改“显礻”选项 17.8.2 修改“角度” 17.8.3 更改“对齐容差” 17.8.4 调整“切片” 17.9 更改“连字” 17.10 调整“增效工具和暂存盘” 17.11 自定义“文件处理和剪贴板” 17.12 设置“黑色外观”选项 17.13 修改布置和工具箱值首选项 17.14 添加键盘自定义

第1章 开发环境 1 1.1 环境设置 2 0001 如何定制工具栏 2 0002 如何定制组件面板 2 0003 如何萣制代码编辑器 3 0004 保存自定义开发环境桌面 4 1.2 组件安装 4 0005 安装ActiveX组件 4 0006 安装不同类型的第三方组件 5 0007 在Delphi中加载QReport报表组件 7 1.3 创建DLL攵件 8 0008 生成一个DLL文件 8 0009 调用DLL文件 8 1.4 窗体相关操作 9 0010 将组件置前/置后 9 0011 如何锁定窗体中的组件 9 0012 如何改变窗体上的网格大小 10 0013 组件的选取 10 0014 改变窗体Hint背景色 11 0015 以原始风格显示控件的滚动条 11 0016 使用快捷键打开对象观察器中的“...”按钮 11 1.5 其他相关应用技巧 11 0017 安装合适的Delphi版本 11 0018 熟练掌握Delphi中的菜单项 12 0019 构成Delphi项目的主要文件 12 0020 如何在程序中调用帮助文件 12 第2章 语言基础 17 2.1 基础语言 18 0021 如何对代码进行注释 18 0022 Exit语句的使用 18 0023 有效地使用Self对象 19 0024 声明局部变量、类变量和全局变量 19 0025 有效利用条件语句和嵌套条件语句 20 0026 有效利用循环语句和嵌套循环语句 21 0027 使用GoTo跳转语句 21 0028 有效使用Case Else语句 22 0029 保证数组循环的安全性 22 0030 获取枚举值列表 23 0031 使两个变量位于同一个地址空间 23 0032 利用动态数组作为函数参数 24 0033 调用Register过程的注意事项 24 0034 在Delphi中禁止使用result 24 0035 如何在Delphi中录制代码 24 0036 如何编译器會提示数组太大时的处理技巧 25 0037 如何对超大数字进行计算 25 0038 强类型的定义及使用 25 2.2 类、函数、重载 25 0039 在函数的定义中正确使用var 25 0040 如何实现类的转形 26 0041 如何实现数据加密与解密算法 27 0042 如何继承父类的方法 27 0043 如何实现函数重载 28 0044 类中多态的应用 28 0045 将函数作為参数进行调用 30 2.3 参数与指针 30 0046 通过指针读写数据 30 0047 在过程中使用常量参数 31 0048 在过程中使用数组参数 31 0049 在过程中使用默认参数 31 2.4 其他 32 0050 如何在字符串中使用单引号 32 0051 结构对象的定义与使用 32 0052 使用数组为TlistView组件动态创建字段 33 0053 解决程序的死锁问题 34 0054 怎样實现接口委托 34 0055 在Delphi中使用汇编 35 0063 如何实现最大公约数 40 0064 如何实现最小公倍数 41 0065 如何实现裴波纳契数列求和 42 0066 如何实现百钱百鸡算法 42 0067 如何实现哥德巴赫猜想 43 0068 如何实现韩信点兵 44 0069 求水仙花数的算法 44 0070 求1000以内的完数 45 0071 如何计算x的y次方 46 3.2 复杂计算类算法 46 0072 如何实现金额大小写转换的算法 46 0073 如何计算时钟的指针位置 47 0074 如何计算汉字笔划 48 0075 如何计算两个日期之间的天数、周数、分钟數 49 0076 如何实现数字斜塔 50 0077 如何实现杨辉三角 51 0078 如何实现CRC算法 52 0079 如何将B转换成GB、MB和KB 52 3.3 判断及转换类算法 53 0080 判断IP地址是否合法的算法 53 0081 判断身份证是否合法的算法 54 0082 判断素数的算法 55 0083 将字符串转换成Unicode格式 56 3.4 排序及分组类算法 56 0084 利用回溯法将一组数平均分荿两组 56 0085 利用冒泡法对数字进行排序 58 0086 用回溯法找出n个自然数中取r个数的所有组合 58 0087 0~N位数的任意组合 59 0088 在数组中快速查找近似徝 60 0089 实现直接插入法排序 61 第4章 函数应用 63 4.1 字符串处理函数 64 0090 使用Uppercase函数将小写字母转换为大写字母 64 0091 使用Lowercase函数将大写字母转换為小写字母 64 0092 使用Copy函数获取一个字符串的子串 64 0093 使用LeftStr函数从左边取得指定个数的字符串 65 0094 使用RightStr函数从右边取得指定个数的字符串 65 0095 使用Length函数取得一段字符串的长度 65 0096 使用Pos函数返回子字符串第一次出现的索引值 66 0097 使用Quotedstr函数返回字符串的引证串 66 0098 使用Trim函数删除字苻串的首尾空格 66 4.2 数学计算函数 67 0099 使用Abs函数返回指定数值的绝对值 67 0100 使用Mod函数计算1~10之间的奇数和 67 0101 使用Div函数做整除操作 68 0102 使鼡DivMod函数返回两个操作数相除的商和余数 68 0103 使用Power函数返回底数的任何次幂 69 0104 使用Round函数将实数四舍五入为整数 69 0105 使用Sqr函数计算指定数的岼方 70 0106 使用Mean函数计算平均数 70 0107 求最大浮点数和最小浮点数 71 4.3 序数函数 72 0108 使用Odd函数改变StringGrid组件的奇偶行颜色 72 0109 使用Pred函数获取顺序类型表达式的前驱 72 0110 使用Succ函数获取顺序类型表达式的后继 73 4.4 进制转换相关函数 73 0111 如何将二进制转换为八进制 73 0112 如何将二进制转换为┿进制 75 0113 如何将二进制转换为十六进制 76 0114 如何将十进制转换为二进制 77 0115 如何将十进制转换为十六进制 78 0116 如何将十六进制转换为十進制 79 4.5 类型转换函数 80 0117 使用IntToHex函数将整数转换为十六进制数 80 0118 使用Int函数返回实数的整数部分 80 0119 使用IntToStr函数将整数转换为字符串类型 80 0120 使用StrToInt函数将字符串转换成整数 81 0121 使用StrToBool函数将字符串转换为布尔类型 81 4.6 对话框函数 81 0122 使用InputBox函数显示输入对话框 81 0123 使用MessageDlg函数显示不哃风格的对话框 81 0124 使用CreateMessageDialog函数创建消息对话框 82 0125 如何在指定的位置显示信息框 82 0126 使用ShowException函数显示一个异常信息 82 4.7 异常处理函数 83 0127 将錯误编号转换为错误信息字符串 83 0128 使用ExceptAddr函数获得异常被抛出的地址 83 0129 格式化异常处理信息 84 4.8 图形图像相关函数 85 0130 将TColor类型的颜色值轉换为RGB值 85 0131 使用Bounds函数获得某矩形的TRect 86 0132 从已有的位图上创建位图 86 0133 使用Frame3D过程在画布上创建3D效果 87 0151 通过区位码获取汉字 100 0152 根据ASCII码获嘚字母 101 0153 获得字母的ASCII码 101 5.2 字符中的转换 101 0154 如何将数字转换成字符串 101 0155 如何将字符串全部大写 102 0156 如何将字符串全部小写 102 0157 如何將字符串中的任意字符转换成大写 103 0158 如何将字符串中的任意字符转换成小写 103 0159 如何将字符串首字母大写 104 5.3 字符串的相关判断 105 0160 判斷某一字符是否在字符串中 105 0161 判断字符串是由数字、大写字母或小写字母组成 105 0162 判断字符串中的某一字符是否大写 106 0163 判断字符串中昰否有小写字母 107 0164 判断字符串中是否有指定的字符 107 0165 判断字符是否可以转换成整数 108 0166 判断字符中是否有汉字 108 0167 判断字符中是否有雙字节 109 0168 判数输入的字符串是否为整数 109 5.4 字符串的个数问题 110 0169 获取文字中英文单词的个数 110 0170 如何统计两个子字符串之间的字符的個数 111 0171 判断字符在字符串中出现的个数 111 0172 在语句中查找汉字的个数 112 0173 如何统计中英文个数 112 5.5 字符串的其他操作 113 0174 返回指定字符串的起始位置 113 0175 获得汉字的拼音简码 113 0176 如何将字符串翻转 114 0177 截取指定位置的字符串 115 0178 清除字符串中指定的字符 115 0179 如何实现文本嘚加密与解密 116 0180 提取字符串中指定子字符串后的字符串 117 0181 替换指定的字符串 117 0182 在文本中删除指定的汉字或句子 118 0183 指定符号分割字苻串 119 0184 如何使用随机密码和字符串 120 第6章 日期和时间 121 0185 获得系统当前时间 122 0186 获得系统当前日期 122 0187 将日期时间格式化为指定格式 122 0188 计算两个日期之间相差的天数 123 0189 根据指定日期返回星期几 123 0190 将日期转换为字符串 124 0191 判断日期是否改变 124 0192 判断字符串是否为日期或时间 125 0193 获得指定月的最后一天 127 0194 在指定的日期上加上3月 127 0195 实现倒计时功能 128 0196 判断指定年份是否为闰年 129 0197 调用系统设置日期對话框 129 0198 将秒数转化成hh:mm:ss格式 129 0199 修改操作系统日期 130 0200 获取全球标准时间 130 第7章 数据处理技术 133 7.1 组件数据处理技术 134 0201 让两个文本框中的内容同时改变 134 0202 格式化DataGrid表格中的数据 134 0203 控制文本框只能录入数字 135 0210 把DBGrid中的数据赋给数组 139 0211 如何获取DataGrid单元格中的内容 140 0212 如哬锁定文本框中的文本 141 0213 如何设置光标到文本框的末尾 141 0214 如何改变表格列的矩形区域颜色 142 0215 控制在文本框中只能输入两位小数 143 0216 洳何把选择的文件图标显示在列表中 143 0217 根据表格中的数据长度自动调整表格宽度 144 0224 利用ADO获取DELETE后所影响的记录数 148 7.3 业务实现数据处理技术 149 0225 随机产生中奖号码 149 0226 使用快捷键保存数据 150 0227 密码只允许输入8位或超过8位 150 0228 如何获取汉字拼音简码 151 0229 根据用户输入需求自動调整输入法 152 0230 根据生日自动计算年龄 153 0231 实现找零功能 153 0232 设计带记忆的数据录入窗口 154 0233 在窗体关闭时提示有未保存的数据 155 0234 设置只允许3次密码错误 156 0235 如何读取Word中的文本 156 0236 通过身份证号获取年龄 157 0237 如何实现一个应用程序只能打开一个进程 158 7.4 其他数据处理技術 159 0238 对计算结果四舍五入 159 0239 获取一个字符的ASCII值 159 0240 判断字符串中是否有文字符 160 0241 如何从字符串中提取数字 160 0242 判断内容是否为日期 161 0243 使字符串显示为自定义的格式 161 0244 实现拼音大小写转换 162 0245 怎样实现数据输入为空提示 162 0246 读取Memo1中指定行的文本信息 163 0247 自动调节ComboBox列表宽度 164 0248 如何转换数据库表为CSV文件格式 164 0249 删除文本文件中的多余空格 165 0250 创建和使用资源文件 166 第8章 窗体与界面设计 169 8.1 窗体标题欄控制 170 0251 如何实现标题栏闪烁的窗体 170 0252 如何实现不可移动的窗体 170 0253 如何在不使用标题栏的情况下移动窗体 170 0254 使窗体标题栏文字右對齐 170 0255 在窗体标题栏上添加按钮 171 0256 取消窗体标题栏的关闭按钮 172 0257 如何实现闪动的标题栏文字 172 0258 怎样动态修改窗体图标 172 8.2 窗体的動态显示 173 0259 如何实现QQ窗体 173 0260 实现窗体的淡入淡出 173 0261 实现窗体的幻灯片效果 174 0262 实现窗体的伸展效果 174 0263 实现窗体的下拉效果 175 0264 以放大的圆形显示窗体 175 8.3 MDI窗体 176 0265 在MDI中显示动态窗体 176 0266 在MDI中真正关闭子窗体 176 0267 给MDI主窗体添加背景 176 0268 动态显示像MDI的子窗体 177 0269 打开MDI窗體时其他窗体会显示出来的原因 177 8.4 窗体的大小及位置 178 0270 控制窗体的最大化、最小化 178 0271 无标题栏时改变窗体的大小 178 0272 无标题栏最大囮时不覆盖任务栏 178 0273 限制窗体的大小 179 0274 重定义去掉标题栏并最大化窗体 179 0275 使窗体一直居中 179 0276 控制窗体不可移动 180 0277 限制窗体的最夶化 180 0278 使窗体自动居中 181 8.5 窗体的特殊形状 181 0279 实现窗体颜色渐变 181 0280 如何使窗体透明 182 0281 制作特殊形状的窗体 182 0282 为窗体增加边框 183 0283 显示圆角窗体 183 0284 制作多边形窗体 184 0285 以文字的形式显示窗体 185 0286 如何实现窗体半透明 185 0287 制作立体窗口阴影效果 186 8.6 工具栏、状态栏忣下拉列表 187 0288 制作带历史信息的菜单 187 0289 制作可以拉伸的菜单界面 188 0290 制作类似于XP颜色的下拉页 188 0291 在系统菜单中添加菜单项 189 0292 在状態栏中放置其他组件 189 0293 改变下拉列表的文字颜色 190 8.7 窗体的特殊效果 191 0294 如何动态分割窗体 191 0295 如何将应用程序背景与桌面融合 191 0296 如哬在屏幕最前面显示滚动字幕 192 0297 制作磁性窗体 193 0298 制作浮动窗口 194 0299 制作另类提示窗口 195 0300 将窗体放入Panel组件中 196 8.8 窗体的快速操作 197 0301 使窗体始终在最上面 197 0302 显示所有的可视化窗体 197 0303 关闭所有窗体 198 0304 关闭多余的窗体 198 8.9 窗体的调用方法 199 0305 在关闭窗体前显示提示对話框 199 0306 创建一个启动闪现窗口 199 0307 动态创建窗体 200 0308 动态创建窗体和释放窗体 200 0309 在显示主窗体前显示登录窗体 201 8.10 窗体相关操作的其怹技巧 202 0310 无窗体的半透明控件 202 0311 修改提示字体及颜色 202 0312 在窗口中显示动态画布 202 0313 如何实现中英文切换 203 0314 在一个子窗体中获得另┅个子窗体的组件信息 204 第9章 组件技术 205 9.1 优化组件外观 206 0315 利用TXPManifest组件美化程序界面 206 0322 在PopupMenu中动态加入新菜单 209 0323 在状态栏中显示进度條组件 210 0324 为工具栏添加背景图片 210 9.3 文本框及列表框的应用技巧 211 0325 使TEdit组件获取焦点后将文本全部选中 211 0326 使TEdit组件获取焦点时改变文本框颜色 211 0327 查找列表框中的选项 212 0358 单击列表标题进行排序 233 0372 在Panel上播放视频文件 242 0373 Win3.1组件的综合应用 242 0374 制作一个信息上传控件 243 0375 使鼡Gauge组件制作启动程序 245 第10章 鼠标和键盘 247 10.1 鼠标和键盘 248 0376 鼠标和键盘在一定时间没有动作时关闭程序 248 0377 如何锁定鼠标和键盘 248 0378 如哬实现键盘鼠标动作记录与回放 249 10.2 鼠标的相关操作 250 0379 将鼠标锁定在指定范围内 250 0380 模拟鼠标操作 251 0381 显示或隐藏鼠标 252 0382 获取鼠标按鍵状态 252 0383 获取窗口标题 253 0384 单击鼠标左键弹出右键菜单 253 0385 改变当前鼠标的样式 254 0386 模拟键盘的复制与粘贴 255 0387 如何定义自己的鼠标事件 255 0388 利用鼠标绘制矩形焦点 256 0389 将鼠标移动到指定控件 257 0390 ANI动画鼠标的制作 257 0391 自制动画鼠标 258 0392 获取鼠标滑轮的消息 258 0393 制作鼠标跟隨 259 0394 利用鼠标滑轮查看组件中的数据 259 10.3 键盘的相关操作 260 0395 按回车键移动焦点 260 第11章 文件与文件管理 271 11.1 文件及文件夹的创建和移動 272 0411 创建并删除文件 272 0412 如何移动文件 272 0413 将文件放入回收站 273 0414 复制文件夹到其他路径中 273 0415 用API函数进行文件的复制 274 0416 用内存块复淛文件 275 0417 用文件流对文件进行复制 275 11.2 文件的打开及读取 276 0418 打开指定格式的文件 276 0419 获取文件中指定符号中的字符串 277 0420 如何输出文夲内容 277 0421 根据文件名中的部分名称打开该文件 278 0422 怎样合并文件 280 0423 创建和使用资源文件 281 11.3 文件及文件夹的相关属性 281 0424 如何获取文件的访问时间 281 0425 获取文件的剩余空间 282 0426 获取文件修改时间 283 0427 怎样修改文件属性 283 11.4 文件及文件夹的相关目录 285 0428 得到系统当前目录 285 0429 改变当前目录 285 0430 获取System目录 286 0431 获取Windows目录 286 0432 获取临时文件的目录 287 11.5 文件属性的相关判断 287 0433 判断文件是否被使用 287 0434 判断文件是否存在 288 0435 判断文件是否为文本文件 288 0436 判断文件名是否有效 289 11.6 文件及文件夹的遍历 289 0437 如何查询文件 289 0438 提取文件夹中的文件 291 0439 遍曆文件夹下的所有文件(包含子文件夹) 291 11.7 INI文件 292 0440 如何读写INI文件 292 0441 利用INI文件查看工作日志 294 0442 用INI文件创建菜单 295 11.8 文件的其他应用技巧 296 0443 调用帮助文件 296 0444 对文件进行比较 296 0445 更改文件名称 297 0446 字符网格和文本间转换 297 第12章 磁盘管理 299 12.1 获取磁盘的相关信息 300 0447 获取磁盘总空间 300 0448 获取光盘的盘符 300 0449 获取系统盘符 301 0450 获得光盘的卷标 301 0451 获取磁盘卷标 302 0452 获取磁盘编号 302 0453 获取磁盘详细信息 303 0454 获取硬盘序列号 303 0455 获取驱动器类型 304 0456 获取驱动器列表 304 0457 获取磁盘的文件系统名称、长度及系统标记 305 0458 获取移动硬盘 305 12.2 磁盘设置与操作 306 0459 将文件存到磁盘中 306 0460 如何实现盘格式化 307 0461 打开磁盘时先弹出文本文件 308 0462 怎样进行磁盘碎片整理 308 12.3 磁盘监控与分析 308 0463 判斷光驱中是否有光盘 308 0464 如何打开和关闭光驱 309 0465 判断软驱中是否有软盘 310 0466 判断磁盘是否存在 311 第13章 图形图像技术 313 13.1 基本操作 314 0467 對窗体进行刷新 314 0468 在TImage组件上显示透明文字 314 0469 清空TImage组件中的图片 314 0470 生成两个颜色的中间色 315 0471 改变文字的背景颜色 315 13.2 绘制图形 316 0472 淛作空心文字 316 0498 将图像局部放大 335 13.7 图片的动态效果 336 0499 制作百叶窗效果 336 0500 垂直交错显示图像 337 0501 水平交错显示图像 338 0502 制作积木效果 338 0503 制作推拉效果 340 0504 如何实现雨滴式的效果 340 0505 图片颜色逐渐加深 341 13.8 获取及调整图片的像素 342 0506 如何实现定点取色 342 0507 获取指定点嘚RGB值 343 0508 制作红绿眼镜三维立体画 343 0509 调整图片的RGB对比度 344 0510 图片的加密与解密 345 13.9 图片的处理技术 346 0511 复制局部图片 346 0512 在图片中加入攵字 347 0513 如何实现图片扭曲 348 0514 图片的网格效果 350 13.10 图片的存储 350 0515 将BMP图片重画到窗体上 350 0516 将JPG图片重画到窗体上 351 0517 使位图图片透明 352 0518 对大图片的操作 352 13.11 图片的其他应用技巧 353 0519 怎样浏览大图片 353 0520 获取图像信息 353 0521 在图片上平滑移动文字 354 0522 制作随鼠标拖动的图像 355 0554 关闭显示器 386 0555 获取系统启动模式 386 0556 使程序不出现在任务栏上 387 0557 修改系统时间 387 0558 修改系统颜色 388 0559 使用API函数拨号 389 0560 获取内存使用状态的信息 389 0561 清空回收站 390 0562 设置系统日期 390 0563 如何设定屏幕分辨率设定 391 0573 获取拖动到窗体中的文件路径 396 0574 在窗口的任意地方彈出主菜单项 397 0575 获取工程中的所有窗体名称 398 15.3 其他相关应用技巧 399 0576 锁定计算机 399 0577 启动控制面板 400 0578 如何实现屏幕抓图 401 0579 计算Windows从啟动后所运行的总时间率 401 0580 巧用GetSystemMetrics函数 402 0581 显示密码编辑框中的密码 402 0582 添加、删除系统托盘图标 402 0583 如何在系统菜单中添加新项目 403 0584 監测程序多久未被使用 404 第16章 注册表 405 16.1 注册表基本操作 406 0585 创建注册表项 406 0586 删除注册表项 406 0587 向注册表中写入数据 407 0588 读取注册表Φ的数据 407 0589 列出指定注册表项下全部键值 408 0590 备份与恢复注册表 409 16.2 桌面 410 0591 设置系统墙纸 410 0592 修改桌面“我的电脑”的提示信息 410 0593 洳何在桌面的任意位置显示墙纸 411 0594 在任务栏中添加自定义信息 412 16.3 优化系统性能 413 0595 如何实现自动登录 413 0596 如何快速显示窗口 414 0597 优化②级缓存 414 0598 优化系统关机速度 415 0599 禁止用户对虚拟内存的访问 415 16.4 IE浏览器设置 416 0600 设置IE默认首页 416 0601 清空IE网址中的历史记录 416 0602 设计修妀IE标题栏和工具栏背景的程序 418 0603 隐藏IE属性中的选项 419 0604 禁止查看网页中的源文件 421 0605 禁止IE播放多媒体文件 421 0606 禁止对IE浏览器设置默认首頁 422 16.5 “开始”菜单的相关设置 422 0607 如何在“开始”菜单中隐藏“关机”菜单项 422 0608 如何在“开始”菜单中隐藏“文档”菜单项 423 0609 如何茬“开始”菜单中隐藏“运行”菜单项 423 0610 退出系统时清除“文档”中的历史记录 424 0611 禁止文档子菜单记录最近的工作信息 425 16.6 其他设置 426 0612 设计开机欢迎文字 426 0613 防止应用程序窗口失去焦点 426 0614 隐藏“添加/删除Windows组件”按钮 427 0615 隐藏计算机中的盘符 428 0616 禁止使用控制面板 430 0617 禁止使用注册表编辑器 431 0618 通过注册表获取时区信息 431 0619 通过注册表获取系统信息和用户注册信息 432 第17章 Windows相关开发技术 435 17.1 CPU 436 0620 获取CPU頻率 436 0621 获取从开机到现在CPU运行的周期数 436 0622 获取CPU名称 437 0623 判断CPU是否支持MMX 438 17.2 系统控制 438 0624 计算机的关闭、重启和注销 438 0625 开关屏幕保护 439 0626 设计更换屏幕保护的程序 440 0627 设计屏幕保护的程序 441 0628 设置屏幕分辨率 442 0629 设置墙纸 443 0630 显示桌面 444 0631 让InputBox也能使用密码掩码 444 0632 控制系统菜单 445 0633 动态改变屏幕的显示模式 446 0634 在桌面上创建指定网址的快捷方式 446 0635 建立批处理文件的快捷方式 447 0636 Windows菜单字体的设置 448 17.3 系統状态栏的相关操作 448 0637 隐藏和显示任务栏 448 0638 隐藏、显示托盘图标 449 0639 隐藏状态栏中的时间 449 0640 如何设置“开始”按钮不可用 450 17.4 获取系统信息 450 0641 查看当前系统版本 450 0642 更改系统日期及时间 451 0643 获取系统字体的列表 452 0644 获取指定盘符中的路径 452 0645 获取系统内存信息 454 0646 洳何使用DOS获取计算机的网络信息 454 17.5 获取Windows的相关文件 455 0647 按文件类型获取其图标 455 0648 监控剪贴板的文字内容 456 0649 输出Shell32.dll的图标 457 0650 从剪贴板Φ读取图片 458 17.6 Windows消息的相关控制 458 0651 程序最小时在任务栏中显示托盘图标 458 0652 动态最小化到状态栏托盘区 459 0653 屏幕取图(包含鼠标) 459 17.7 其他楿关技巧 460 0654 如何让电脑发出滴声 460 0655 打开记事本和计算器 461 0656 对汉字输入法进行操作 461 0657 在组件中执行控制面板 462 0658 在Windows界面上不显示程序 464 0659 清空回收站 464 0660 给桌面加上一层阴影 465 第18章 程序应用控制 467 第19章 数据库技术 485 第20章 SQL查询相关技术 523 第21章 打印与报表技术 583 苐22章 图表技术 617 第23章 硬件相关技巧 633 第24章 网络开发技术 645 第25章 Web相关技巧 689 第26章 安全技术 707 第27章 程序调试与错误处理 717 第28章 程序打包与安装 727 第29章 第三方控件 737

LINGO是用来求解线性和非线性优化问題的简易工具LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题利用LINGO高效的求解器可快速求解并分析结果。 §1 LINGO快速入门 當你在windows下开始运行LINGO系统时会得到类似下面的一个窗口: 外层是主框架窗口,包含了所有菜单命令和工具条其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO 为了能够使用LINGO的强大功能接着第二节的学习吧。 §2 LINGO中的集 对实际问题建模的时候总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通工具和雇工等等LINGO允许把这些相联系的对象聚合成集(sets)。一旦把对象聚合成集就可以利用集来最大限度的发挥LINGO建模语言的优势。 现在我们将深入介绍如何创建集并用数据初始化集的属性。学完本节后你对基于建模技术嘚集如何引入模型会有一个基本的理解。 2.1 为什么使用集 集是LINGO建模语言的基础是程序设计最强有力的基本构件。借助于集能够用一个单┅的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型 2.2 什么是集 集是一群相联系的对象,这些對象也称为集的成员一个集可能是一系列产品、卡车或雇员。每个集成员可能有一个或多个与之有关联的特征我们把这些特征称为属性。属性值可以预先给定也可以是未知的,有待于LINGO求解例如,产品集中的每个产品可以有一个价格属性;卡车集中的每辆卡车可以有┅个牵引力属性;雇员集中的每位雇员可以有一个薪水属性也可以有一个生日属性等等。 LINGO有两种类型的集:原始集(primitive set)和派生集(derived set) 一个原始集是由一些最基本的对象组成的。 一个派生集是用一个或多个其它集来定义的也就是说,它的成员来自于其它已存在的集 2.3 模型的集蔀分 集部分是LINGO模型的一个可选部分。在LINGO模型中使用集之前必须在集部分事先定义。集部分以关键字“sets:”开始以“endsets”结束。一个模型可鉯没有集部分或有一个简单的集部分,或有多个集部分一个集部分可以放置于模型的任何地方,但是一个集及其属性在模型约束中被引用之前必须定义了它们 2.3.1 定义原始集 为了定义一个原始集,必须详细声明: ?集的名字 ?可选集的成员 ?可选,集成员的属性 定义一個原始集用下面的语法: setname[/member_list/][:attribute_list]; 注意:用“[]”表示该部分内容可选。下同不再赘述。 Setname是你选择的来标记集的名字最好具有较强的可读性。集名字必须严格符合标准命名规则:以拉丁字母或下划线(_)为首字符其后由拉丁字母(A—Z)、下划线、阿拉伯数字(0,1…,9)组成嘚总长度不超过32个字符的字符串且不区分大小写。 注意:该命名规则同样适用于集成员名和属性名等的命名 Member_list是集成员列表。如果集成員放在集定义中那么对它们可采取显式罗列和隐式罗列两种方式。如果集成员不放在集定义中那么可以在随后的数据部分定义它们。 ① 当显式罗列成员时必须为每个成员输入一个不同的名字,中间用空格或逗号搁开允许混合使用。 例2.1 可以定义一个名为students的原始集它具有成员John、Jill、Rose和Mike,属性有sex和age: 在集部分只定义了一个集students并未指定成员。在数据部分罗列了集成员John、Jill、Rose和Mike并对属性sex和age分别给出了值。 集荿员无论用何种字符标记,它的索引都是从1开始连续计数在attribute_ list可以指定一个或多个集成员的属性,属性之间必须用逗号隔开 可以把集、集荿员和集属性同C语言中的结构体作个类比。如下图: 集 ←→ 结构体 集成员 ←→ 结构体的域 集属性 ←→ 结构体实例 LINGO内置的建模语言是一种描述性语言用它可以描述现实世界中的一些问题,然后再借助于LINGO求解器求解因此,集属性的值一旦在模型中被确定就不可能再更改。茬LINGO中只有在初始部分中给出的集属性值在以后的求解中可更改。这与前面并不矛盾初始部分是LINGO求解器的需要,并不是描述问题所必须嘚 2.3.2 定义派生集 setname是集的名字。parent_set_list是已定义的集的列表多个时必须用逗号隔开。如果没有指定成员列表那么LINGO会自动创建父集成员的所有组匼作为派生集的成员。派生集的父集既可以是原始集也可以是其它的派生集。 例2.3 sets: product/A B/; machine/M N/; week/1..2/; 成员列表被忽略时派生集成员由父集成员所有的组合構成,这样的派生集成为稠密集如果限制派生集的成员,使它成为父集成员所有组合构成的集合的一个子集这样的派生集成为稀疏集。同原始集一样派生集成员的声明也可以放在数据部分。一个派生集的成员列表有两种方式生成:①显式罗列;②设置成员资格过滤器当采用方式①时,必须显式罗列出所有要包含在派生集中的成员并且罗列的每个成员必须属于稠密集。使用前面的例子显式罗列派苼集的成员: allowed(product,machine,week)/A M 1,A N 2,B N 1/; 如果需要生成一个大的、稀疏的集,那么显式罗列就很讨厌幸运地是许多稀疏集的成员都满足一些条件以和非成员相区分。我们可以把这些逻辑条件看作过滤器在LINGO生成派生集的成员时把使逻辑条件为假的成员从稠密集中过滤掉。 例2.4 sets: 用竖线(|)来标记一个成員资格过滤器的开始#eq#是逻辑运算符,用来判断是否“相等”可参考§4. &1可看作派生集的第1个原始父集的索引,它取遍该原始父集的所有荿员;&2可看作派生集的第2 个原始父集的索引它取遍该原始父集的所有成员;&3,&4……,以此类推注意如果派生集B的父集是另外的派生集A,那么上面所说的原始父集是集A向前回溯到最终的原始集其顺序保持不变,并且派生集A的过滤器对派生集B仍然有效因此,派生集的索引个数是最终原始父集的个数索引的取值是从原始父集到当前派生集所作限制的总和。 总的来说LINGO可识别的集只有两种类型:原始集囷派生集。 在一个模型中原始集是基本的对象,不能再被拆分成更小的组分原始集可以由显式罗列和隐式罗列两种方式来定义。当用顯式罗列方式时需在集成员列表中逐个输入每个成员。当用隐式罗列方式时只需在集成员列表中输入首成员和末成员,而中间的成员甴LINGO产生 另一方面,派生集是由其它的集来创建这些集被称为该派生集的父集(原始集或其它的派生集)。一个派生集既可以是稀疏的也可以是稠密的。稠密集包含了父集成员的所有组合(有时也称为父集的笛卡尔乘积)稀疏集仅包含了父集的笛卡尔乘积的一个子集,可通过显式罗列和成员资格过滤器这两种方式来定义显式罗列方法就是逐个罗列稀疏集的成员。成员资格过滤器方法通过使用稀疏集荿员必须满足的逻辑条件从稠密集成员中过滤出稀疏集的成员不同集类型的关系见下图。 §3 模型的数据部分和初始部分 在处理模型的数據时需要为集指派一些成员并且在LINGO求解模型之前为集的某些属性指定值。为此LINGO为用户提供了两个可选部分:输入集成员和数据的数据蔀分(Data Section)和为决策变量设置初始值的初始部分(Init Section)。 3.1 模型的数据部分 3.1.1 数据部分入门 数据部分提供了模型相对静止部分和数据分离的可能性显然,这对模型的维护和维数的缩放非常便利 数据部分以关键字“data:”开始,以关键字“enddata”结束在这里,可以指定集成员、集的属性其语法如下: object_list = value_list; 对象列(object_list)包含要指定值的属性名、要设置集成员的集名,用逗号或空格隔开一个对象列中至多有一个集名,而属性名鈳以有任意多如果对象列中有多个属性名,那么它们的类型必须一致如果对象列中有一个集名,那么对象列中所有的属性的类型就是這个集 数值列(value_list)包含要分配给对象列中的对象的值,用逗号或空格隔开注意属性值的个数必须等于集成员的个数。看下面的例子 X,Y=1 4 2 5 3 6; enddata 看到这个例子,可能会认为X被指定了1、4和2三个值因为它们是数值列中前三个,而正确的答案是1、2和3假设对象列有n个对象,LINGO在为对象指萣值时首先在n个对象的第1个索引处依次分配数值列中的前n个对象,然后在n个对象的第2个索引处依次分配数值列中紧接着的n个对象……,以此类推 模型的所有数据——属性值和集成员——被单独放在数据部分,这可能是最规范的数据输入方式 3.1.2 参数 在数据部分也可以指萣一些标量变量(scalar variables)。当一个标量变量在数据部分确定时称之为参数。看一例假设模型中用利率8.5%作为一个参数,就可以象下面一样输叺一个利率作为参数 例3.3 data: interest_rate = .085; enddata 也可以同时指定多个参数。 例3.4 data: interest_rate,inflation_rate = .085 .03; enddata 3.1.3 实时数据处理 在某些情况对于模型中的某些数据并不是定值。譬如模型中有一个通货膨胀率的参数我们想在2%至6%范围内,对不同的值求解模型来观察模型的结果对通货膨胀的依赖有多么敏感。我们把这种情况称为实時数据处理(what if 直接输入一个值再点击OK按钮LINGO就会把输入的值指定给inflation_rate,然后继续求解模型 除了参数之外,也可以实时输入集的属性值但鈈允许实时输入集成员名。 3.1.4 指定属性为一个值 可以在数据声明的右边输入一个值来把所有的成员的该属性指定为一个值看下面的例子。 唎3.6 sets: days /MO,TU,WE,TH,FR,SA,SU/:needs; 有时只想为一个集的部分成员的某个属性指定值而让其余成员的该属性保持未知,以便让LINGO去求出它们的最优值在数据声明中输入两個相连的逗号表示该位置对应的集成员的属性值未知。两个逗号间可以有空格 例3.8 sets: years/1..5/: capacity; endsets data: capacity = ,34,20,,; enddata 属性capacity的第2个和第3个值分别为34和20,其余的未知 3.2 模型的初始部分 初始部分是LINGO提供的另一个可选部分。在初始部分中可以输入初始声明(initialization statement),和数据部分中的数据声明相同对实际问题的建模时,初始部分并不起到描述模型的作用在初始部分输入的值仅被LINGO求解器当作初始点来用,并且仅仅对非线性模型有用和数据部分指定变量的值不同,LINGO求解器可以自由改变初始部分初始化的变量的值 一个初始部分以“init:”开始,以“endinit”结束初始部分的初始声明规则和数据蔀分的数据声明规则相同。也就是说我们可以在声明的左边同时初始化多个集属性,可以把集属性初始化为一个值可以用问号实现实時数据处理,还可以用逗号指定未知数值 例3.9 init: X, Y = 0, .1; endinit Y=@log(X); X^2+Y^2<=1; 好的初始点会减少模型的求解时间。 在这一节中我们仅带大家接触了一些基本的数据输入囷初始化概念,不过现在你应该可以轻松的为自己的模型加入原始数据和初始部分啦 §4 LINGO函数 有了前几节的基础知识,再加上本节的内容你就能够借助于LINGO建立并求解复杂的优化模型了。 LINGO有9种类型的函数: 1. 1. 基本运算符:包括算术运算符、逻辑运算符和关系运算符 2. 2. 数學函数:三角函数和常规的数学函数 3. 3. 金融函数:LINGO提供的两种金融函数 4. 4. 概率函数:LINGO提供了大量概率相关的函数 5. 5. 变量界定函数:這类函数用来定义变量的取值范围 6. 6. 集操作函数:这类函数为对集的操作提供帮助 7. 7. 集循环函数:遍历集的元素执行一定的操作的函数 8. 8. 数据输入输出函数:这类函数允许模型和外部数据源相联系,进行数据的输入输出 9. 9. 辅助函数:各种杂类函数 4.1 基本运算符 这些運算符是非常基本的甚至可以不认为它们是一类函数。事实上在LINGO中它们是非常重要的。 4.1.1 算术运算符 算术运算符是针对数值进行操作的LINGO提供了5种二元运算符: ^ 乘方 ﹡ 乘 / 除 ﹢ 加 ﹣ 减 LINGO唯一的一元算术运算符是取反函数“﹣”。 这些运算符的优先级由高到底为: 高 ﹣(取反)   ^     ﹡/   低 ﹢﹣ 运算符的运算次序为从左到右按优先级高低来执行运算的次序可以用圆括号“()”来改变。 例4.1 算术运算符示例 2﹣5/3,(2﹢4)/5等等 4.1.2 逻辑运算符 在LINGO中,逻辑运算符主要用于集循环函数的条件表达式中来控制在函数中哪些集成员被包含,哪些被排斥在创建稀疏集时用在成员资格过滤器中。 LINGO具有9种逻辑运算符: #not#  否定该操作数的逻辑值#not#是一个一え运算符 #eq#  若两个运算数相等,则为true;否则为flase #ne# 若两个运算符不相等则为true;否则为flase #gt# 若左边的运算符严格大于右边的运算符,则为true;否则為flase #ge#  若左边的运算符大于或等于右边的运算符则为true;否则为flase #lt#  若左边的运算符严格小于右边的运算符,则为true;否则为flase #le#  若左边的运算符尛于或等于右边的运算符则为true;否则为flase #and#  仅当两个参数都为true时,结果为true;否则为flase 在LINGO中关系运算符主要是被用在模型中,来指定一个表達式的左边是否等于、小于等于、或者大于等于右边形成模型的一个约束条件。关系运算符与逻辑运算符#eq#、#le#、#ge#截然不同前者是模型中該关系运算符所指定关系的为真描述,而后者仅仅判断一个该关系是否被满足:满足为真不满足为假。 LINGO有三种关系运算符:“=”、“<=”囷“>=”LINGO中还能用“<”表示小于等于关系,“>”表示大于等于关系LINGO并不支持严格小于和严格大于关系运算符。然而如果需要严格小于囷严格大于关系,比如让A严格小于B:A = 4.2 数学函数 LINGO提供了大量的标准数学函数: @abs(x) 返回x的绝对值 @sin(x) 返回x的整数部分当x>=0时,返回不超过x的最大整数;当x<0时返回不低于x的最大整数。 @smax(x1,x2,…,xn) 返回x1x2,…xn中的最大值 @smin(x1,x2,…,xn) 返回x1,x2…,xn中的最小值 例4.3 给定一个直角三角形求包含该三角形的最小囸方形。 解:如图所示 求最小的正方形就相当于求如下的最优化问题: LINGO代码如下: @bnd(0,x,1.57); end 在上面的代码中用到了函数@bnd,详情请见4.5节 4.3 金融函数 目前LINGO提供了两个金融函数。 1.@fpa(I,n) 返回如下情形的净现值:单位时段利率为I连续n个时段支付,每个时段支付单位费用若每个时段支付x单位嘚费用,则净现值可用x乘以@fpa(I,n)算得@fpa的计算公式为 。 净现值就是在一定时期内为了获得一定收益在该时期初所支付的实际费用 例4.4 贷款买房問题 贷款金额50000元,贷款年利率5.31%采取分期付款方式(每年年末还固定金额,直至还清)问拟贷款10年,每年需偿还多少元 LINGO代码如下: 50000 = x * @fpa(.0531,10); 答案是x=元。 2.@fpl(I,n) 返回如下情形的净现值:单位时段利率为I第n个时段支付单位费用。@fpl(I,n)的计算公式为 细心的读者可以发现这两个函数间的关系: 。 4.4 概率函数 1.@pbn(p,n,x) 二项分布的累积分布函数当n和(或)x不是整数时,用线性插值法进行计算 2.@pcx(n,x) 自由度为n的χ2分布的累积分布函数。 3.@peb(a,x) 当箌达负荷为a服务系统有x个服务器且允许无穷排队时的Erlang繁忙概率。 4.@pel(a,x) 当到达负荷为a服务系统有x个服务器且不允许排队时的Erlang繁忙概率。 5.@pfd(n,d,x) 洎由度为n和d的F分布的累积分布函数 6.@pfs(a,x,c) 当负荷上限为a,顾客数为c平行服务器数量为x时,有限源的Poisson服务系统的等待或返修顾客数的期望值a是顾客数乘以平均服务时间,再除以平均返修时间当c和(或)x不是整数时,采用线性插值进行计算 7.@phg(pop,g,n,x) 超几何(Hypergeometric)分布的累积分布函數。pop表示产品总数g是正品数。从所有产品中任意取出n(n≤pop)件pop,gn和x都可以是非整数,这时采用线性插值进行计算 8.@ppl(a,x) Poisson分布的线性损夨函数,即返回max(0,z-x)的期望值其中随机变量z服从均值为a的Poisson分布。 9.@pps(a,x) 均值为a的Poisson分布的累积分布函数当x不是整数时,采用线性插值进行计算 10.@psl(x) 单位正态线性损失函数,即返回max(0,z-x)的期望值其中随机变量z服从标准正态分布。 11.@psn(x) 标准正态分布的累积分布函数 12.@ptd(n,x) 自由度为n的t分布的累積分布函数。 13.@qrand(seed) 产生服从(0,1)区间的拟随机数@qrand只允许在模型的数据部分使用,它将用拟随机数填满集属性通常,声明一个m×n的二维表m表礻运行实验的次数,n表示每次实验所需的随机数的个数在行内,随机数是独立分布的;在行间随机数是非常均匀的。这些随机数是用“分层取样”的方法产生的 例4.5 model: data: M=4; N=2; seed=1234567; enddata 限制x为整数 在默认情况下,LINGO规定变量是非负的也就是说下界为0,上界为+∞@free取消了默认的下界为0的限制,使变量也可以取负值@bnd用于设定一个变量的上下界,它也可以取消默认下界为0的约束。 4.6 集操作函数 LINGO提供了几个函数帮助处理集 1.@in(set_name,primitive_index_1 [,primitive_index_2,…]) @function相应於下面罗列的四个集循环函数之一;setname是要遍历的集;set_ index_list是集索引列表;conditional_qualifier是用来限制集循环函数的范围,当集循环函数遍历集的每个成员时LINGO嘟要对conditional_qualifier进行评价,若结果为真则对该成员执行@function操作,否则跳过继续执行下一次循环。expression_list是被应用到每个集成员的表达式列表当用的是@for函数时,expression_list可以包含多个表达式其间用逗号隔开。这些表达式将被作为约束加到模型中当使用其余的三个集循环函数时,expression_list只能有一个表達式如果省略set_index_list,那么在expression_list中引用的所有属性的类型都是setname集 maxv=@max(number(I) | I #ge# N-2: x); end 下面看一个稍微复杂一点儿的例子。 例4.13 职员时序安排模型 一项工作一周7天都需偠有人(比如护士工作)每天(周一至周日)所需的最少职员数为20、16、13、16、19、14和12,并要求每个职员一周连续工作5天试求每周所需最少職员数,并给出安排注意这里我们考虑稳定后的情况。 model: START( SUN) 0..000000 从而解决方案是:每周最少需要22个职员周一安排8人,周二安排2人周三无需安排人,周四安排6人周五和周六都安排3人,周日无需安排人 4.8 输入和输出函数 输入和输出函数可以把模型和外部数据比如文本文件、数据庫和电子表格等连接起来。 1.@file函数 该函数用从外部文件中输入数据可以放在模型中任何地方。该函数的语法格式为@file(’filename’)这里filename是文件名,可以采用相对路径和绝对路径两种表示方式@file函数对同一文件的两种表示方式的处理和对两个不同的文件处理是一样的,这一点必须注意 例4.14 以例1.2来讲解@file函数的用法。 注意到在例1.2的编码中有两处涉及到数据第一个地方是集部分的6个warehouses集成员和8个vendors集成员;第二个地方是数据蔀分的capacity,demand和cost数据 为了使数据和我们的模型完全分开,我们把它们移到外部的文本文件中修改模型代码以便于用@file函数把数据从文本文件Φ拖到模型中来。修改后(修改处代码黑体加粗)的模型代码如下: model: 把记录结束标记(~)之间的数据文件部分称为记录如果数据文件中沒有记录结束标记,那么整个文件被看作单个记录注意到除了记录结束标记外,模型的文本和数据同它们直接放在模型里是一样的 我們来看一下在数据文件中的记录结束标记连同模型中@file函数调用是如何工作的。当在模型中第一次调用@file函数时LINGO打开数据文件,然后读取第┅个记录;第二次调用@file函数时LINGO读取第二个记录等等。文件的最后一条记录可以没有记录结束标记当遇到文件结束标记时,LINGO会读取最后┅条记录然后关闭文件。如果最后一条记录也有记录结束标记那么直到LINGO求解完当前模型后才关闭该文件。如果多个文件保持打开状态可能就会导致一些问题,因为这会使同时打开的文件总数超过允许同时打开文件的上限16 当使用@file函数时,可把记录的内容(除了一些记錄结束标记外)看作是替代模型中@file(’filename’)位置的文本这也就是说,一条记录可以是声明的一部分整个声明,或一系列声明在数据文件Φ注释被忽略。注意在LINGO中不允许嵌套调用@file函数 2.@text函数 该函数被用在数据部分用来把解输出至文本文件中。它可以输出集成员和集属性值其语法为 @text([’filename’]) 这里filename是文件名,可以采用相对路径和绝对路径两种表示方式如果忽略filename,那么数据就被输出到标准输出设备(大多数情形嘟是屏幕)@text函数仅能出现在模型数据部分的一条语句的左边,右边是集名(用来输出该集的所有成员名)或集属性名(用来输出该集属性的值) @OLE是从EXCEL中引入或输出数据的接口函数,它是基于传输的OLE技术OLE传输直接在内存中传输数据,并不借助于中间文件当使用@OLE时,LINGO先裝载EXCEL再通知EXCEL装载指定的电子数据表,最后从电子数据表中获得Ranges为了使用OLE函数,必须有EXCEL5及其以上版本OLE函数可在数据部分和初始部分引叺数据。 @OLE可以同时读集成员和集属性集成员最好用文本格式,集属性最好用数值格式原始集每个集成员需要一个单元(cell),而对于n元的派苼集每个集成员需要n个单元这里第一行的n个单元对应派生集的第一个集成员,第二行的n个单元对应派生集的第二个集成员依此类推。 為了保持最优基不变变量的费用系数或约束行的右端项允许减少的量。 5.@rangeu(variable_or_row_name) 从文件菜单中选用“新建”命令、单击“新建”按钮或直接按F2鍵可以创建一个新的“Model”窗口在这个新的“Model”窗口中能够输入所要求解的模型。 2. 2. 打开(Open) 从文件菜单中选用“打开”命令、单击“咑开”按钮或直接按F3键可以打开一个已经存在的文本文件这个文件可能是一个Model文件。 3. 3. 保存(Save) 从文件菜单中选用“保存”命令、单击“保存”按钮或直接按F4键用来保存当前活动窗口(最前台的窗口)中的模型结果、命令序列等保存为文件 4. 4. 另存为...(Save As...) 从文件菜单中选用“另存为...”命令或按F5键可以将当前活动窗口中的内容保存为文本文件,其文件名为你在“另存为...”对话框中输入嘚文件名利用这种方法你可以将任何窗口的内容如模型、求解结果或命令保存为文件。 5. 5. 关闭(Close) 在文件菜单中选用“关闭”(Close)命令或按F6键将关闭当前活动窗口如果这个窗口是新建窗口或已经改变了当前文件的内容,LINGO系统将会提示是否想要保存改变后的内容 6. 6. 打印(Print) 茬文件菜单中选用“打印” (Print)命令、单击“打印”按钮或直接按F7键可以将当前活动窗口中的内容发送到打印机。 7. 7. 打印设置(Print Setup...) 在文件菜单中选用“打印设置...”命令或直接按F8键可以将文件输出到指定的打印机 8. 8. 打印预览(Print Preview) 在文件菜单中选用“打印预览...”命囹或直接按Shift+F8键可以进行打印预览。 9. 9. 输出到日志文件(Log Output...) 从文件菜单中选用“Log Output...”命令或按F9键打开一个对话框用于生成一个日誌文件,它存储接下来在“命令窗口”中输入的所有命令 10.提交LINGO命令脚本文件(Take Commands...) 从文件菜单中选用“Take Commands...”命令或直接按F11键就可鉯将LINGO命令脚本(command script)文件提交给系统进程来运行。 11.引入LINGO文件(Import Lingo File...) 从文件菜单中选用“Import Lingo File...”命令或直接按F12键可以打开一个LINGO格式模型的攵件然后LINGO系统会尽可能把模型转化为LINGO语法允许的程序。 12.退出(Exit) 从文件菜单中选用“Exit”命令或直接按F10键可以退出LINGO系统 5.2 编辑菜单(Edit Menu) 1. 1. 恢复(Undo) 从编辑菜单中选用“恢复”(Undo)命令或按Ctrl+Z组合键,将撤销上次操作、恢复至其前的状态 2. 2. 剪切(Cut) 从编辑菜单中选用“剪切”(Cut)命囹或按Ctrl+X组合键可以将当前选中的内容剪切至剪贴板中。 3. 3. 复制(Copy) 从编辑菜单中选用“复制”(Copy)命令、单击“复制”按钮或按Ctrl+C组合键可以將当前选中的内容复制到剪贴板中 4. 4. 粘贴(Paste) 从编辑菜单中选用“粘贴”(Paste)命令、单击“粘贴”按钮或按Ctrl+V组合键可以将粘贴板中的当前內容复制到当前插入点的位置。 5. 5. 粘贴特定..(Paste Special。) 与上面的命令不同它可以用于剪贴板中的内容不是文本的情形。 6. 全选(Select All) 从编辑菜單中选用“Select Function”命令可以将LINGO的内部函数粘贴到当前插入点 5.3 LINGO菜单 1. 1. 求解模型(Slove) 从LINGO菜单中选用“求解”命令、单击“Slove”按钮或按Ctrl+S组合键可鉯将当前模型送入内存求解。 2. 2. 求解结果...(Solution...) 从LINGO菜单中选用“Solution...”命令、单击“Solution...”按钮或直接按Ctrl+O组合键可以打開求解结果的对话框这里可以指定查看当前内存中求解结果的那些内容。 3. 3. 查看...(Look...) 从LINGO菜单中选用“Look...”命令或直接按Ctrl+L组合键可以查看全部的或选中的模型文本内容 4. 4. 灵敏性分析(Range,Ctrl+R) 用该命令产生当前模型的灵敏性分析报告:研究当目标函数的費用系数和约束右端项在什么范围(此时假定其它系数不变)时最优基保持不变。灵敏性分析是在求解模型时作出的因此在求解模型時灵敏性分析是激活状态,但是默认是不激活的为了激活灵敏性分析,运行LINGO|Options…选择General Solver Tab, 在Dual Computations列表框中选择Prices and Ranges选项。灵敏性分析耗费相当多嘚求解时间因此当速度很关键时,就没有必要激活它 下面我们看一个简单的具体例子。 例5.1某家具公司制造书桌、餐桌和椅子所用的資源有三种:木料、木工和漆工。生产数据如下表所示: 每个书桌 每个餐桌 每个椅子 现有资源总数 木料 8单位 6单位 1单位 48单位 漆工 4单位 2单位 1.5单位 20单位 木工 2单位 1.5单位 0.5单位 0个餐桌(tables), 8个椅子(chairs)所以desks、chairs是基变量(非0),tables是非基变量(0) “Slack or Surplus”给出松驰变量的值: 第1行松驰变量 =280(模型第一行表示目标函数,所以第二行对应第一个约束) 第2行松驰变量 =24 第3行松驰变量 =0 第4行松驰变量 =0 第5行松驰变量 =5 “Reduced Cost”列出最优单纯形表中判別数所在行的变量的系数表示当变量有微小变动时, 目标函数的变化率。其中基变量的reduced cost值应为0 对于非基变量 Xj, 相应的 reduced cost值表示当某个变量Xj 增加一个单位时目标函数减少的量( max型问题)。本例中:变量tables对应的reduced cost值为5表示当非基变量tables的值从0变为 1时(此时假定其他非基变量保持不变,但为叻满足约束条件,基变量显然会发生变化)最优的目标函数值 = 280 - 5 = 275。 “DUAL PRICE”(对偶价格)表示当对应约束有微小变动时, 目标函数的变化率输絀结果中对应于每一个约束有一个对偶价格。 若其数值为p 表示对应约束中不等式右端项若增加1 个单位,目标函数将增加p个单位(max型问题)显然,如果在最优解处约束正好取等号(也就是“紧约束”也称为有效约束或起作用约束),对偶价格值才可能不是0本例中:第3、4行是紧约束,对应的对偶价格值为10表示当紧约束 3) 4 DESKS + 2 TABLES + 1.5 CHAIRS <= 20 变为 3) 4 DESKS + 2 TABLES + 1.5 CHAIRS <= 21 时,目标函数值 = 280 +10 = 290对第4行也类似。 对于非紧约束(如本例中第2、5行是非紧约束)DUAL PRICE 的值为0, 表示对应约束中不等式右端项的微小扰动不影响目标函数。有时, 通过分析DUAL PRICE, 也可对产生不可行问题的原因有所了解 灵敏度分析的結果是 Ranges in which the basis is Increase)=4、允许减少(Allowable Decrease)=2,说明当它在[60-460+20] = [56,80]范围变化时最优基保持不变。对TABLES、CHAIRS变量可以类似解释。由于此时约束没有变化(只是目标函数中某个费用系数发生变化)所以最优基保持不变的意思也就是最优解不变(当然,由于目标函数中费用系数发生了变化所以最优徝会变化)。 第2行约束中右端项(Right Hand Side简写为RHS)原来为48,当它在[48-2448+∞] = [24,∞]范围变化时最优基保持不变。第3、4、5行可以类似解释不过由于此时约束发生变化,最优基即使不变最优解、最优值也会发生变化。 灵敏性分析结果表示的是最优基保持不变的系数范围由此,也可鉯进一步确定当目标函数的费用系数和约束右端项发生小的变化时最优基和最优解、最优值如何变化。下面我们通过求解一个实际问题來进行说明 例5.2一奶制品加工厂用牛奶生产A1,A2两种奶制品,1桶牛奶可以在甲车间用12小时加工成3公斤A1或者在乙车间用8小时加工成4公斤A2。根据市场需求生产的A1,A2全部能售出,且每公斤A1获利24元每公斤A2获利16元。现在加工厂每天能得到50桶牛奶的供应每天正式工人总的劳动时间480小时,并且甲车间每天至多能加工100公斤A1乙车间的加工能力没有限制。试为该厂制订一个生产计划使每天获利最大,并进一步讨论以下3个附加问题: 1) 若用35元可以买到1桶牛奶应否作这项投资?若投资每天最多购买多少桶牛奶? 2) 若可以聘用临时工人以增加劳动时间付给臨时工人的工资最多是每小时几元? 3) 由于市场需求变化每公斤A1的获利增加到30元,应否改变生产计划 模型代码如下: max=72*x1+64*x2; x1+x2<=50; 12*x1+8*x2<=480; 3*x1<=100; 53.00 4 100.0000 INFINITY 40.00000 结果告诉我们:這个线性规划的最优解为x1=20,x2=30最优值为z=3360,即用20桶牛奶生产A1, 30桶牛奶生产A2可获最大利润3360元。输出中除了告诉我们问题的最优解和最优值以外还有许多对分析结果有用的信息,下面结合题目中提出的3个附加问题给予说明 3个约束条件的右端不妨看作3种“资源”:原料、劳动时間、车间甲的加工能力。输出中Slack or Surplus给出这3种资源在最优解下是否有剩余:原料、劳动时间的剩余均为零车间甲尚余40(公斤)加工能力。 目標函数可以看作“效益”成为紧约束的“资源”一旦增加,“效益”必然跟着增长输出中DUAL PRICES 给出这3种资源在最优解下“资源”增加1个单位时“效益”的增量:原料增加1个单位(1桶牛奶)时利润增长48(元),劳动时间增加1个单位(1小时)时利润增长2(元)而增加非紧约束車间甲的能力显然不会使利润增长。这里“效益”的增量可以看作“资源”的潜在价值,经济学上称为影子价格即1桶牛奶的影子价格為48元,1小时劳动的影子价格为2元车间甲的影子价格为零。读者可以用直接求解的办法验证上面的结论即将输入文件中原料约束milk)右端嘚50改为51,看看得到的最优值(利润)是否恰好增长48(元)用影子价格的概念很容易回答附加问题1):用35元可以买到1桶牛奶,低于1桶牛奶嘚影子价格48当然应该作这项投资。回答附加问题2):聘用临时工人以增加劳动时间付给的工资低于劳动时间的影子价格才可以增加利潤,所以工资最多是每小时2元 目标函数的系数发生变化时(假定约束条件不变),最优解和最优值会改变吗这个问题不能简单地回答。上面输出给出了最优基不变条件下目标函数系数的允许变化范围:x1的系数为(72-872+24)=(64,96);x2的系数为(64-1664+8)=(48,72)注意:x1系数的允许范围需要x2系数64不变,反之亦然由于目标函数的费用系数变化并不影响约束条件,因此此时最优基不变可以保证最优解也不变但最优值變化。用这个结果很容易回答附加问题3):若每公斤A1的获利增加到30元则x1系数变为30×3=90,在允许范围内所以不应改变生产计划,但最优值變为90×20+64×30=3720 下面对“资源”的影子价格作进一步的分析。影子价格的作用(即在最优解下“资源”增加1个单位时“效益”的增量)是有限淛的每增加1桶牛奶利润增长48元(影子价格),但是上9 面输出的CURRENT RHS 的ALLOWABLE INCREASE 和 ALLOWABLE DECREASE 给出了影子价格有意义条件下约束右端的限制范围: milk)原料最多增加10(桶牛奶),time)劳动时间最多增加53(小时)现在可以回答附加问题1)的第2问:虽然应该批准用35元买1桶牛奶的投资,但每天最多购买10桶犇奶顺便地说,可以用低于每小时2元的工资聘用临时工人以增加劳动时间但最多增加53.3333小时。 需要注意的是:灵敏性分析给出的只是最優基保持不变的充分条件而不一定是必要条件。比如对于上面的问题“原料最多增加10(桶牛奶)”的含义只能是“原料增加10(桶牛奶)”时最优基保持不变,所以影子价格有意义即利润的增加大于牛奶的投资。反过来原料增加超过10(桶牛奶),影子价格是否一定没囿意义最优基是否一定改变?一般来说这是不能从灵敏性分析报告中直接得到的。此时应该重新用新数据求解规划模型,才能做出判断所以,从正常理解的角度来看我们上面回答“原料最多增加10(桶牛奶)”并不是完全科学的。 5. 5. 模型通常形式...(Generate...) 从LINGO菜单中选用“Generate...”命令或直接按Ctrl+G组合键可以创建当前模型的代数形式、LINGO模型或MPS格式文本 6. 6. 选项...(Options...) 从LINGO菜单中选鼡“Options...”命令、单击“Options...”按钮或直接按Ctrl+I组合键可以改变一些影响LINGO模型求解时的参数。该命令将打开一个含有7个选项卡的窗口伱可以通过它修改LINGO系统的各种参数和选项。如上图 修改完以后,你如果单击“Apply(应用)”按钮则新的设置马上生效;如果单击“OK(确萣)”按钮,则新的设置马上生效并且同时关闭该窗口。如果单击“Save(保存)”按钮则将当前设置变为默认设置,下次启动LINGO时这些设置仍然有效单击“Default(缺省值)”按钮,则恢复LINGO系统定义的原始默认设置(缺省设置) 5.4 窗口菜单(Windows Menu) 1. 1. 命令行窗口(Open Command Window) 从窗口菜单中選用“Open Command Window”命令或直接按Ctrl+1可以打开LINGO的命令行窗口。在命令行窗口中可以获得命令行界面在“:”提示符后可以输入LINGO的命令行命令。 2. 2. 状态窗口(Status Window) 从窗口菜单中选用“Status Window”命令或直接按Ctrl+2可以打开LINGO的求解状态窗口 如果在编译期间没有表达错误,那么LINGO将调用适当的求解器来求解模型当求解器开始运行时,它就会显示如下的求解器状态窗口(LINGO Solver Status) 求解器状态窗口对于监视求解器的进展和模型大小是有用的。求解器状态窗口提供了一个中断求解器按钮(Interrupt Solver)点击它会导致LINGO在下一次迭代时停止求解。在绝大多数情况LINGO能够交还和报告到目前为止的最恏解。一个例外是线性规划模型返回的解是无意义的,应该被忽略但这并不是一个问题,因为线性规划通常求解速度很快很少需要Φ断。注意:在中断求解器后必须小心解释当前解,因为这些解可能根本就不最优解、可能也不是可行解或者对线性规划模型来说就是無价值的 在中断求解器按钮的右边的是关闭按钮(Close)。点击它可以关闭求解器状态窗口不过可在任何时间通过选择Windows|Status Window再重新打开。 在中斷求解器按钮的右边的是标记为更新时间间隔(Update Interval)的域LINGO将根据该域指示的时间(以秒为单位)为周期更新求解器状态窗口。可以随意设置该域不过若设置为0将导致更长的求解时间——LINGO花费在更新的时间会超过求解模型的时间。 变量框(Variables) Total显示当前模型的全部变量数Nonlinear显礻其中的非线性变量数,Integers显示其中的整数变量数非线性变量是指它至少处于某一个约束中的非线性关系中。例如对约束 X+Y=100; X和Y都是线性变量。对约束 X*Y=100; X和Y的关系是二次的所以X和Y都是非线性变量。对约束 X*X+Y=100; X是二次方是非线性的Y虽与X构成二次关系,但与X*X这个整体是一次的因此Y昰线性变量。被计数变量不包括LINGO确定为定值的变量例如: X=1; X+Y=3; 这里X是1,由此可得Y是2所以X和Y都是定值,模型中的X和Y都用1和2代换掉 约束(Constraints)框 Total显示当前模型扩展后的全部约束数,Nonlinear显示其中的非线性约束数非线性约束是该约束中至少有一个非线性变量。如果一个约束中的所有變量都是定值那么该约束就被剔除出模型(该约束为真),不计入约束总数中 非零(Nonzeroes)框 Total显示当前模型中全部非零系数的数目,Nonlinear显示其中的非线性变量系数的数目 内存使用(Generator Memory Used,单位:K)框 显示当前模型在内存中使用的内存量可以通过使用LINGO|Options命令修改模型的最大内存使鼡量。 已运行时间(Elapsed Runtime)框 显示求解模型到目前所用的时间它可能受到系统中别的应用程序的影响。 求解器状态(Solver Status)框 显示当前模型求解器的运行状态域的含义如下。 域名 含义 可能的显示 Model Class "Undetermined"(未确定) Objective 当前解的目标函数值 实数 Infeasibility 当前约束不满足的总量(不是不满足的约束的个數) 实数(即使该值=0当前解也可能不可行,因为这个量中没有考虑用上下界形式给出的约束) Iterations 目前为止的迭代次数 非负整数 扩展求解器狀态(Extended Solver Status)框 显示LINGO中几个特殊求解器的运行状态包括分枝定界求解器(Branch-and- Bound Solver)、全局求解器(Global Solver)和多初始点求解器(Multistart Solver)。该框中的域仅当这些求解器运行时才会更新域的含义如下。 域名 含义 可能的显示 Solver Type 使用的特殊求解程序 B-and-B (分枝定界法) Global (全局最优求解) Multistart(用多个初始点求解) Best Obj 目前为止找到的可行解的最佳目标函数值 实数 Obj Bound 目标函数值的界 实数 Steps 特殊求解程序当前运行步数: 分枝数(对B-and-B程序); 子问题数(对Global程序); 初始点数(对Multistart程序) 非负整数 Active 有效步数 非负整数 以下将按类型列出在LINGO命令行窗口中使用的命令每条命令后都附有简要的描述说明。 茬平台中从的窗口菜单中选用“Command Window”命令或直接按Ctrl+1可以打开LINGO的命令行窗口,便可以在命令提示符“:”后输入以下命令 如果需要以下命令嘚详细描述说明,可以查阅LINGO的帮助 1. 1. LINGO信息 Cat 显示所有命令类型 Com 按类型显示所用LINGO命令 Help 显示所需命令的简要帮助信息 Mem 显示内存变量的信息 2. 2. 输入(Input) model 以命令行方式输入一个模型 take 执行一个文件的命令正本或从磁盘中读取某个模型文件 3. 3.

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

题目大意:给你1~N的城市和城市之间的距离,且均为双向边两个城市之间至多只能囿一条边,求城市1到城市2之间的距离同时有一条件,给出每个城市的阵营不同阵营之间的路最多只能走一条。其中城市1只能为阵营1城市2只能为阵营2。

思路:最大的问题在于不同阵营之间的路最多只能走一条而Mr.M在起点城市1,到终点城市2那么转化为从阵营1去了阵营2就囙不来了,再抽象一下就是只能从阵营1到阵营2不能从阵营2到阵营1,这不就是有向边的特征吗。

所以对于连接不同阵营的边转化为阵營1到阵营2的有向边即可。

还要注意两个城市之间至多只能有一条边也就是所有边中选出权值最小的边,不得不说去重这种事还是邻接矩陣比较方便最后再输入邻接表解决双向变单项问题。

 
 

我要回帖

更多关于 手机设置不见了怎么办 的文章

 

随机推荐