将bmp图片像素点的颜色值存储到字节数组

chrisky2006 2011-06-24 11:05:00
读取一Bmp图片,循环所有的像素点颜色值,存储至字节数组,每8个至一个字节。

现已经可以获取像素点颜色值, 代码片段如下,

byte[] result = new byte[bmp.Height * (bmp.Width / 8 + 1)];
int index = 0;

for (int i = 0; i< bmp.Height ; i++)
for (int j = 0; j< bmp.Width; j++)
{
if(j > 0 && j % 8 ==0)
index ++;

int pixel = bmp.getPixel(i,j);
// 问题: 怎么将8个点的颜色值保存至 一字节
//??????????????????????????
//.............................
}

...全文
198 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenchenyangll 2011-06-24
  • 打赏
  • 举报
回复
我没有搞错的话

1个像素分RGB,每个值都是 0 ~ 255

也即 总计需要 8 * 3 = 24 位 即3字节

1个像素就要3字节哦 = =
易语言辅助模块 .子程序 _等待, , 公开 .参数 毫秒, 整数型, , 单位/毫秒 1000毫秒=1秒 .子程序 _高级处理事件, , 公开, 优化处理事件的效率,先判断是否存在事件 .子程序 _高精度等待, , 公开 .参数 微秒, 整数型, , 单位/微秒 1000微秒=1毫秒;1000毫秒=1秒 .子程序 _高精度延时, , 公开 .参数 微秒, 长整数型, , 单位/微秒 1000微秒=1毫秒;1000毫秒=1秒 .子程序 _高速扫描ARP, 整数型, 公开, 扫描局域网中的所有IP地址和MAC地址。成功返回(扫描到的计算机数量) .参数 欲扫描的IP段, 文本型, , 如:192.168.0.1 将扫描192.168.0.1 - 192.168.0.255 .参数 IP缓冲区, 文本型, 参考 数组 .参数 MAC缓冲区, 文本型, 参考 数组 .子程序 _禁止重复运行, 逻辑型, 公开, 如果程序已运行(直接结束),否则返回(假)。 .参数 标识, 文本型, 可空, 如果有多个程序用到禁止重复运行功能,建意给每个程序定个不同的标识.任意文本 .参数 窗口句柄, 整数型, 可空, 如果参数被省略,不还原最小化的窗口 .子程序 _卸载热键, 逻辑型, 公开, 成功返回(真),失败返回(假) .参数 窗口句柄, 整数型 .参数 热键的ID, 整数型, , 由“_注册热键”命令获得 .子程序 _卸载所有热键, , 公开, 撤销所有热键 .子程序 _注册热键, 整数型, 公开, 注册成功返回热键ID,失败返回0,支持多热键 .参数 窗口句柄, 整数型 .参数 功能键状态, 整数型, , 1、Alt;2、Ctrl;4、Shitf;8、Win。若要两个或以上的状态键按则把它们的相加. .参数 键代码, 整数型 .参数 子程序指针, 子程序指针 .数据类型 RGB, 公开 .成员 R, 整数型 .成员 G, 整数型 .成员 B, 整数型 .数据类型 进程数据, 公开, 进程信息数据 .成员 结构大小, 整数型, , , 1024 .成员 进程的引用计数, 整数型 .成员 进程ID, 整数型 .成员 进程默认堆ID, 整数型 .成员 进程模块ID, 整数型 .成员 线程数, 整数型 .成员 父进程ID, 整数型 .成员 线程优先权, 整数型 .成员 保留, 整数型 .成员 进程名称, 字节型, , "256" .数据类型 矩形, 公开 .成员 矩形左边, 整数型 .成员 矩形顶边, 整数型 .成员 矩形宽度, 整数型 .成员 矩形高度, 整数型 .数据类型 矩形区域, 公开 .成员 矩形左边, 整数型 .成员 矩形顶边, 整数型 .成员 矩形右边, 整数型 .成员 矩形底边, 整数型 .数据类型 模块数据, 公开, 模块信息数据 .成员 结构大小, 整数型, , , 1024 .成员 mid, 整数型 .成员 pid, 整数型 .成员 gusage, 整数型 .成员 pusage, 整数型 .成员 起始地址, 整数型 .成员 内存长度, 整数型 .成员 模块句柄, 整数型 .成员 模块文件名, 字节型, , "256" .成员 模块完整路径, 字节型, , "256" .数据类型 内存参数, 公开 .成员 数据结构长度, 整数型 .成员 物理内存使用百分比, 整数型 .成员 物理内存总字节数, 整数型, , , 除1024=单位/K .成员 物理内存可用字节数, 整数型, , , 除1024=单位/K .成员 分页文件总字节数, 整数型, , , 除1024=单位/K .成员 分页文件可用字节数, 整数型, , , 除1024=单位/K .成员 虚拟内存总字节数, 整数型, , , 除1024=单位/K .成员 虚拟内存可用字节数, 整数型, , , 除1024=单位/K .数据类型 内存数据, 公开 .成员 cb, 整数型 .成员 页面错误, 整数型 .成员 内存使用峰, 整数型, , , 除1024=单位/K .成员 内存使用, 整数型, , , 除1024=单位/K .成员 页面缓冲池峰, 整数型, , , 除1024=单位/K .成员 页面缓冲池, 整数型, , , 除1024=单位/K .成员 非页面缓冲池峰, 整数型, , , 除1024=单位/K .成员 非页面缓冲池, 整数型, , , 除1024=单位/K .成员 虚拟内存大小, 整数型, , , 除1024=单位/K .成员 虚拟内存大小峰, 整数型, , , 除1024=单位/K .数据类型 文件时间, 公开 .成员 创建时间, 日期时间型 .成员 修改时间, 日期时间型 .成员 访问时间, 日期时间型 .数据类型 坐标, 公开 .成员 X, 整数型, , , 横坐标 .成员 Y, 整数型, , , 纵坐标 .程序集 窗口操作, , 公开 .子程序 窗口抖动, 逻辑型, 公开, 仿QQ窗口抖动效果,窗口抖动完毕返回(真),失败返回(假) .参数 窗口句柄, 整数型, , 欲抖动的窗口句柄。 .参数 抖动幅度, 整数型, 可空, 欲抖动的幅度。如果参数被省略,默认为1 .参数 抖动次数, 整数型, 可空, 欲抖动的次数。如果参数被省略,默认为5 .参数 抖动速度, 整数型, 可空, 欲抖动的速度。如果参数被省略,默认为10 .子程序 窗口嵌入, 逻辑型, 公开, 将指定窗口嵌入到另一个顶级窗口中,成功返回(真),失败返回(假) .参数 子窗口句柄, 整数型 .参数 父窗口句柄, 整数型, , 如:桌面→桌面标题=“Program Manager” .子程序 窗口嵌入桌面, 逻辑型, 公开, 成功返回(真),失败返回(假) .参数 窗口句柄, 整数型, , 欲嵌入到桌面的窗口 .子程序 窗口是否存在, 逻辑型, 公开, 如果窗口存在返回(真),否则返回(假) .参数 窗口句柄, 整数型 .子程序 窗口置顶, 逻辑型, 公开, 成功返回(真),失败返回(假) .参数 窗口句柄, 整数型 .子程序 窗口最小化, 逻辑型, 公开, 成功返回(真),失败返回(假) .参数 窗口句柄, 整数型 .子程序 禁止窗口组建, 逻辑型, 公开, 在指定的窗口或窗口组建里允许或禁止所有鼠标及键盘输入,成功返回(真),失败返回(假) .参数 句柄, 整数型, , 窗口句柄或组建句柄 .参数 类型, 整数型, , 0=禁止,1=允许 .子程序 枚举窗口, 整数型, 公开, 成功返回(所有窗口数量) .参数 窗口句柄, 整数型, 参考 数组, 装载窗口句柄的数组变量,请用循环取出 .子程序 清除窗口, 逻辑型, 公开, 成功返回(真),失败返回(假) .参数 窗口句柄, 整数型 .子程序 取窗口标题, 文本型, 公开, 成功返回(窗口标题),失败返回(空文本) .参数 窗口句柄, 整数型, , 指定的窗口句柄 .子程序 取窗口矩形, 矩形区域, 公开 .参数 窗口句柄, 整数型 .子程序 取窗口句柄, 整数型, 公开, 成功返回(窗口句柄),失败返回(0) .参数 窗口类名, 文本型, 可空, 指定的窗口类名 .参数 窗口标题, 文本型, 可空, 指定的窗口标题 .子程序 取窗口类名, 文本型, 公开, 成功返回(窗口类名),失败返回(空文本) .参数 窗口句柄, 整数型, , 指定的窗口句柄 .子程序 取窗口位置, 坐标, 公开 .参数 窗口句柄, 整数型 .子程序 取父窗口句柄, 整数型, 公开, 成功返回(父窗口句柄),无父窗口或遇到错误返回(0) .参数 窗口句柄, 整数型, , 窗口句柄 .子程序 取进程窗口句柄, 整数型, 公开, 取指定进程的窗口句柄,成功返回(指定进程的父窗口句柄),失败返回(0) .参数 进程ID, 整数型, , 指定进程的ID .子程序 取前台窗口句柄, 整数型, 公开, 成功返回(窗口句柄),失败返回(0) .子程序 置窗口标题, 逻辑型, 公开, 成功返回(真),失败返回(假) .参数 窗口句柄, 整数型 .参数 新标题, 文本型 .子程序 置窗口鼠标穿透, 逻辑型, 公开, 成功返回(真),失败返回(假) .参数 窗口句柄, 整数型 .参数 窗口透明度, 整数型, , 范围0-255,0为完全透明,255为不透明 .参数 是否穿透, 逻辑型, , 如果参数为真马上穿透,如果参数为假取消穿透 .子程序 置窗口透明度, 逻辑型, 公开, 成功返回(真),失败返回(假) .参数 窗口句柄, 整数型 .参数 窗口透明度, 整数型, , 范围0-255,0为完全透明,255为不透明 .子程序 置窗口位置, 逻辑型, 公开, 移动窗口到指定位置 .参数 窗口句柄, 整数型 .参数 横坐标, 整数型 .参数 纵坐标, 整数型 .参数 窗口宽度, 整数型, 可空, 如果为空(不改变当前窗口宽度) .参数 窗口高度, 整数型, 可空, 如果为空(不改变当前窗口高度) .子程序 置窗口状态, 逻辑型, 公开, 成功返回(真),失败返回(假) .参数 窗口句柄, 整数型, , 指定需要控制的窗口句柄 .参数 状态, 整数型, , 0 隐藏取消激活 1 还原激活 2 最小化激活 3 最大化激活 4 还原 6 最小化取消激活 7 最小化 9 还原激活 .程序集 磁盘操作, , 公开 .子程序 创建目录, 逻辑型, 公开, 成功返回(真) .参数 目录全路径, 文本型, , 如:C:\新目录\新子目录...... .子程序 打开文件, 整数型, 公开, 成功返回(文件号),失败返回(0),使用完毕记得关闭文件 .参数 文件全路径, 文本型, , 如果文件不存在,新建一个文件 .参数 打开方式, 整数型, 可空, 1=读入,2=写出,3=读写,4=重写,5=改写,如果参数被省略默认为3 .参数 共享方式, 整数型, 可空, 0=不共享,1=允许读,2=允许写,3=无限制,如果参数被省略默认为3 .子程序 读配置项, 文本型, 公开, 读取指定配置文件中指定项目的文本内容。 .参数 配置文件名, 文本型, , 全路径配置文件名,指定配置文件的名称,通常以.ini作为文件名后缀。 .参数 小节名, 文本型, , 包含欲读入配置项所处节的名称。 .参数 项目名, 文本型, , 参数指定欲读入配置项在其节中的名称。 .参数 默认, 文本型, 可空, 如果指定配置项不存在,将返回此默认文本。如果指定配置项不存在且本参数被省略,将返回空文本。 .子程序 复制文件, 逻辑型, 公开, 成功返回(真),否则返回(假) .参数 源文件全路径, 文本型, , 被复制的文件名 .参数 目标全路径, 文本型, , 目标文件名 .参数 是否覆盖, 整数型, , 非0不覆盖,0覆盖 .子程序 关闭文件, 逻辑型, 公开, 成功返回(真),否则返回(假) .参数 文件号, 整数型, , 由“打开文件”命令获得 .子程序 快速寻找文件, 文本型, 公开, 成功返回(文件全路径),失败返回(空文本) .参数 欲寻找的文件路径, 文本型, , 如:C:\WINDOWS\system32 或 C:\ .参数 欲寻找的文件名, 文本型, , 如:1.exe , 2.dll.....等,暂时不支持*.*操作 .子程序 枚举磁盘, 整数型, 公开, 成功返回(磁盘分区数量) .参数 盘符, 文本型, 参考 数组, 装载磁盘盘符的数组变量,请用循环取出 .子程序 枚举文件, 整数型, 公开, 成功返回(文件数量),错误或无文件返回(0) .参数 全路径, 文本型, , 欲枚举的目录路径,如:C:\WINDOWS\system32 .参数 文件扩展名, 文本型, 可空, 如:*.jpg , *.exe , *.dll......等,如果本参数被省略,默认为搜寻所有文件扩展名 .参数 文件属性, 整数型, 可空, 1、#只读文件; 2、#隐藏文件; 4、#系统文件; 32、#存档文件 通过将这些常量加起来可以一次设置多个文件属性。如果省略本参数,默认为搜寻所有文件属性 .参数 文件数组, 文本型, 参考 数组, 装载文件名的数组变量,请用循环取出 .子程序 枚举子目录, 整数型, 公开, 成功返回(子目录数量),错误或无子目录返回(0) .参数 全路径, 文本型, , 欲枚举的目录路径,如:C:\WINDOWS\system32 .参数 子目录数组, 文本型, 参考 数组, 装载目录名的数组变量,请用循环取出 .子程序 目录是否存在, 逻辑型, 公开, 如果目录存在返回(真),否则返回(假) .参数 目录全路径, 文本型, , 如:C:\WINDOWS .子程序 取磁盘剩余空间, 长整数型, 公开, 返回(单位/字节),失败返回(0),转换成(KB)除以1024..... .参数 磁盘卷标, 文本型, , 如:“C:”、“D:”、“E:”...... .子程序 取磁盘已用空间, 长整数型, 公开, 返回(单位/字节),失败返回(0),转换成(KB)除以1024..... .参数 磁盘卷标, 文本型, , 如:“C:”、“D:”、“E:”...... .子程序 取磁盘总空间, 长整数型, 公开, 返回(单位/字节),失败返回(0),转换成(KB)除以1024..... .参数 磁盘卷标, 文本型, , 如:“C:”、“D:”、“E:”...... .子程序 取路径文件名, 文本型, 公开, 成功返回(文件名) .参数 文件路径, 文本型, , 如:c:\windows\system32\user32.dll .子程序 取文件扩展名, 文本型, 公开, 无扩展名返回空 .参数 文件名或文件全路径, 文本型, , 如:c:\windows\system32\user32.dll或user32.dll .子程序 取文件时间, 文件时间, 公开, 成功返回(“文件时间”数据类型) .参数 文件全路径, 文本型, , 如:C:\Windows\XXX.exe .子程序 取系统特定目录, 文本型, 公开, 成功返回("路径"),失败返回("") .参数 参数, 整数型, 可空, 如果为空=调试模式,将输出调试文本(所有路径),大家自己寻找自己需要的路径 .子程序 删除文件, 逻辑型, 公开, 成功返回(真),否则返回(假) .参数 欲删除的文件全路径, 文本型 .子程序 写配置项, 逻辑型, 公开, 将指定文本内容写入指定配置项中或者删除指定的配置项或节,如果指定配置文件不存在,将会自动创建。成功返回真,失败返回假。 .参数 配置文件名, 文本型, , 全路径配置文件名,指定配置文件的名称,通常以.ini作为文件名后缀。 .参数 节名称, 文本型, , 包含欲写入配置项所处节的名称。 .参数 配置项名称, 文本型, , 参数指定欲写入配置项在其节中的名称。 .参数 欲写入, 文本型, , 参数指定欲写入到指定配置项中的文本。 .子程序 置文件时间, 逻辑型, 公开, 成功返回(真),否则返回(假) .参数 文件全路径, 文本型, , 如:C:\Windows\XXX.exe .参数 创建时间, 日期时间型, 可空, 参数为空,则不改变该时间。 .参数 修改时间, 日期时间型, 可空, 参数为空,则不改变该时间。 .参数 访问时间, 日期时间型, 可空, 参数为空,则不改变该时间。 .程序集 多线程类, , 公开 .子程序 恢复线程, , 公开 .参数 线程ID, 整数型 .子程序 启动线程, 整数型, 公开, 成功返回(线程ID) .参数 子程序, 子程序指针, , 提供欲执行的子程序的指针 .参数 参数, 整数型, 可空, 可提供欲执行的子程序的参数,仅支持整数型 .参数 立即执行, 逻辑型, 可空, 默认为真。若此为假,则建立的线程将被暂停等待恢复线程,反之则立即执行 .子程序 销毁线程, , 公开 .参数 线程ID, 整数型 .子程序 暂停线程, , 公开 .参数 线程ID, 整数型 .程序集 键盘操作, , 公开 .子程序 发送按键消息, , 公开, 向指定窗口句柄的窗口中发送按键消息(无返回) .参数 窗口句柄, 整数型, , 接收消息的窗口句柄 .参数 键代码, 整数型, , 按键的键代码 .参数 类型, 整数型, , 0=单击,1=按下,2=弹起 .子程序 另类模拟按键, , 公开 .参数 按键名, 文本型, , 键盘上的按键名称。如:F1 F2 Q W E R......等 .子程序 模拟按键, , 公开 .参数 键代码, 整数型, , 按键的键代码 .参数 类型, 整数型, , 0=单击,1=按下,2=弹起 .子程序 模拟按键动作, , 公开 .参数 键代码, 整数型, , 按键的键代码 .参数 类型, 整数型, , 0=单击,1=按下,2=弹起 .子程序 投递按键消息, , 公开, 向指定窗口句柄的窗口中投递按键消息(无返回) .参数 窗口句柄, 整数型, , 接收消息的窗口句柄 .参数 键代码, 整数型, , 按键的键代码 .参数 类型, 整数型, , 0=单击,1=按下,2=弹起 .程序集 进程操作, , 公开 .子程序 程序是否存在, 逻辑型, 公开, 如果程序存在返回(真),否则返回(假) .参数 进程名称, 文本型, , 欲判断的进程名称,请区分大小写 .子程序 打开进程, 整数型, 公开, 成功返回(进程句柄),失败返回(0),使用完毕记得关闭进程 .参数 进程ID, 整数型, , 欲打开的进程ID .子程序 关闭进程, 逻辑型, 公开, 成功返回(真),失败返回(假) .参数 进程句柄, 整数型, , 由“打开进程”命令获得 .子程序 进程ID取进程名, 文本型, 公开, 根据指定的进程ID,获取该进程ID对应的进程名称。成功返回(进程名),失败返回(空文本) .参数 进程ID, 整数型, , 欲取进程名称的进程ID .子程序 进程名取进程ID, 整数型, 公开, 根据指定的进程名称,获取该进程名称对应的进程ID。成功返回(进程ID),失败返回(-1) .参数 进程名称, 文本型, , 欲取进程ID的进程名称,请区分大小写 .子程序 进程是否存在, 逻辑型, 公开, 如果进程存在返回(真),否则返回(假) .参数 进程ID, 整数型, , 欲判断的进程ID .子程序 枚举进程, 整数型, 公开, 成功返回(进程数量),失败返回(0) .参数 进程数据, 进程数据, 参考 数组, 请提供进程数据数组变量 .子程序 枚举进程模块, 整数型, 公开, 成功返回(模块数量),失败返回(0) .参数 进程ID, 整数型 .参数 模块数据, 模块数据, 参考 数组, 请提供模块数据数组变量 .子程序 取窗口进程ID, 整数型, 公开, 成功返回(该窗口的进程ID),失败返回(0) .参数 窗口句柄, 整数型, , 指定的窗口句柄 .子程序 取进程路径, 文本型, 公开, 成功返回(进程的完整路径),错误或权限不够返回(空文本),请先提升进程权限 .参数 进程ID, 整数型, , 欲取路径的进程ID .子程序 取进程内存数据, 内存数据, 公开, 如需要获得更多进程内存使用信息,请先提高进程权限 .参数 进程ID, 整数型 .子程序 取进程优先级, 整数型, 公开, 失败返回(0) 成功返回(实时=256 高=128 高于标准=32768 标准=32 低于标准=16384 低=64) .参数 进程ID, 整数型, 可空, 如果为空,表示自身进程ID .子程序 取自进程ID, 整数型, 公开, 成功返回(进程ID) .子程序 取自进程句柄, 整数型, 公开, 成功返回(进程句柄),失败返回(0) .子程序 提升进程权限, 逻辑型, 公开, 提升进程到指定权限 .参数 进程ID, 整数型, 可空, 如果参数被省略,表示自身进程 .参数 权限级别, 文本型, 可空, #备份 #启动 #关机 #调试 如果为空:#调试 .子程序 隐藏进程, 逻辑型, 公开, 成功返回(真),失败返回(假) .子程序 置进程优先级, 逻辑型, 公开, 成功返回(真),失败返回(假) .参数 进程ID, 整数型, 可空, 如果为空,表示自身进程ID .参数 优先级, 整数型, , 实时=256 高=128 高于标准=32768 标准=32 低于标准=16384 低=64 .子程序 终止进程, 逻辑型, 公开, 如果成功返回(真),否则返回(假) .参数 进程ID, 整数型, , 指定的进程ID .程序集 控件类, , 公开 .子程序 创建时钟, 整数型, 公开, 成功返回(时钟句柄),可以在无窗口的程序中使用,如:DLL .参数 时钟周期, 整数型, , 单位:毫秒 .参数 周期事件, 子程序指针, , &调用的子程序 .子程序 水晶进度条, , 公开, 使用比较暗的颜色,效果会更好 .参数 画板, 画板 .参数 最大位置, 整数型 .参数 当前位置, 整数型 .参数 颜色, 整数型, 可空, 默认为#紫红 .参数 方向, 整数型, 可空, 1=从左到右 2=从右到左 3=从上到下 4=从下到上 默认为1 .参数 水晶效果, 逻辑型, 可空, 真=水晶效果 假=无效果 默认为真 .参数 显示背景, 逻辑型, 可空, 真=显示背景 假=无背景 默认为真 .参数 显示百分比, 逻辑型, 可空, 真=显示百分比 假=不显示 默认为假 文本颜色=画板.文本颜色 .子程序 销毁时钟, 整数型, 公开, 成功返回(1) .参数 时钟句柄, 整数型 .子程序 卸载OCX控件, , 公开 .参数 全路径, 文本型 .子程序 颜色选择框, 长整数型, 公开, 如果颜色被选择返回(10进制新颜色),否则返回(初始颜色) .参数 窗口句柄, 整数型, , 欲创建颜色 .参数 初始颜色, 整数型, 可空, 如果参数被省略,默认为 #黑色 .子程序 注册OCX控件, , 公开 .参数 全路径, 文本型 .程序集 内存操作, , 公开 .子程序 读文本型内存, 文本型, 公开, 读取文本型数据,流程:打开进程→执行命令→关闭已打开的进程 .参数 进程ID, 整数型, , 进程ID .参数 内存地址, 整数型, , 内存地址 .参数 读取长度, 整数型, , 欲读长度 .子程序 读整数型内存, 整数型, 公开, 读取整数型数据,流程:打开进程→执行命令→关闭已打开的进程 .参数 进程ID, 整数型, , 进程ID .参数 内存地址, 整数型, , 内存地址 .子程序 读字节集内存, 字节集, 公开, 读取字节集数据,流程:打开进程→执行命令→关闭已打开的进程 .参数 进程ID, 整数型, , 进程ID .参数 内存地址, 整数型, , 内存地址 .参数 读取长度, 整数型, , 欲读长度 .子程序 取系统内存状态, 内存参数, 公开, 获取系统当前内存使用状态,成功返回(内存参数类型数据) .子程序 任意进制转换, 文本型, 公开, 成功返回(转换后的文本)。支持2 8 10 16 32进制互转。例:任意进制转换(“16进制”,16,10) .参数 欲转换文本, 文本型, , 欲转换的文本数据 .参数 欲转换进制, 整数型, , 欲转换的文本数据的进制 .参数 转换的进制, 整数型, , 准备转换成什么进制?支持:2 8 10 16 32进制 .子程序 十六转十, 长整数型, 公开 .参数 十六进制数据, 文本型 .子程序 十转十六, 文本型, 公开 .参数 十进制数据, 长整数型 .子程序 写文本型内存, 逻辑型, 公开, 写入文本型数据,流程:打开进程→执行命令→关闭已打开的进程 .参数 进程ID, 整数型, , 进程ID .参数 内存地址, 整数型, , 内存地址 .参数 文本型数据, 文本型, , 写入数据 .子程序 写整数型内存, 逻辑型, 公开, 写入整数型数据,流程:打开进程→执行命令→关闭已打开的进程 .参数 进程ID, 整数型, , 进程ID .参数 内存地址, 整数型, , 内存地址 .参数 整数型数据, 整数型, , 写入数据 .子程序 写字节集内存, 逻辑型, 公开, 写入字节集数据,流程:打开进程→执行命令→关闭已打开的进程 .参数 进程ID, 整数型, , 进程ID .参数 内存地址, 整数型, , 内存地址 .参数 字节集数据, 字节集, , 写入数据 .程序集 鼠标操作, , 公开 .子程序 捕获鼠标, , 公开, 将鼠标捕获在指定窗口范围中 .参数 窗口句柄, 整数型 .子程序 发送鼠标消息, , 公开, 向指定窗口句柄的窗口中发送鼠标消息(无返回) .参数 窗口句柄, 整数型, , 指定窗口的句柄 .参数 键, 整数型, , 1 左键 2 右键 3 中键 .参数 类型, 整数型, , 1 单击 2 双击 3 按下 4 放开 .参数 横坐标, 整数型, 可空, 如果参数被省略,发送消息到当前的鼠标位置 .参数 纵坐标, 整数型, 可空, 如果参数被省略,发送消息到当前的鼠标位置 .子程序 模拟鼠标动作, , 公开 .参数 键, 整数型, , 1 左键 2 右键 3 中键 .参数 类型, 整数型, , 1 单击 2 双击 3 按下 4 放开 .子程序 模拟鼠标移动, , 公开 .参数 横坐标, 整数型 .参数 纵坐标, 整数型 .子程序 取鼠标横坐标, 整数型, 公开 .子程序 取鼠标纵坐标, 整数型, 公开 .子程序 取鼠标坐标, 坐标, 公开 .子程序 取坐标距离, 整数型, 公开, 返回两坐标点之间的距离 .参数 坐标1, 坐标 .参数 坐标2, 坐标 .子程序 释放鼠标, , 公开 .子程序 释放鼠标活动范围, 逻辑型, 公开 .子程序 鼠标移动, , 公开 .参数 横坐标, 整数型 .参数 纵坐标, 整数型 .子程序 鼠标左右键互换, 逻辑型, 公开, 成功返回(真),失败返回(假) .参数 参数, 整数型, , 0=恢复 1=互换 .子程序 投递鼠标消息, , 公开, 向指定窗口句柄的窗口中投递鼠标消息(无返回) .参数 窗口句柄, 整数型, , 指定窗口的句柄 .参数 键, 整数型, , 1 左键 2 右键 3 中键 .参数 类型, 整数型, , 1 单击 2 双击 3 按下 4 放开 .参数 横坐标, 整数型, 可空, 如果参数被省略,发送消息到当前的鼠标位置 .参数 纵坐标, 整数型, 可空, 如果参数被省略,发送消息到当前的鼠标位置 .子程序 显示鼠标, , 公开 .子程序 限制鼠标活动范围, 逻辑型, 公开 .参数 矩形区域, 矩形区域 .子程序 隐藏鼠标, , 公开 .程序集 图形图象, , 公开 .子程序 快照后台窗口, 字节集, 公开, 捕获指定后台或前台窗口,返回相应图片数据,成功返回(快照字节集),失败返回(空字节集) .参数 窗口句柄, 整数型, , 欲截图的窗口句柄 .子程序 屏幕写字, 逻辑型, 公开, 向指定窗口中写入文本内容,成功返回(真) .参数 窗口句柄, 整数型, 可空, 欲写入文字的窗口的句柄,参数为空则为(屏幕) .参数 横坐标, 整数型, 可空, 写入文字内容的起始位置x横坐标,参数为空则默认为(0) .参数 纵坐标, 整数型, 可空, 写入文字内容的起始位置y纵坐标,参数为空则默认为(0) .参数 欲写入的内容, 文本型, , 欲写入的文本内容 .参数 字体颜色, 整数型, 可空, 参数为空则默认为(#红色) .参数 字体大小, 整数型, 可空, 参数为空则默认为(15) 单位/像素 .参数 字体类型, 文本型, 可空, 参数为空则默认为(宋体) 更多字体请查看相关资料! .参数 加粗, 逻辑型, 可空, 参数为空则(不加粗) 真=加粗 假=不加粗 .参数 倾斜, 逻辑型, 可空, 参数为空则(不倾斜) 真=倾斜 假=不倾斜 .参数 下划线, 逻辑型, 可空, 参数为空则(无下划线) 真=下划线 假=无下划线 .子程序 取RGB, RGB, 公开, 取指定颜色的RGB。成功返回(RGB类型数据) .参数 颜色, 整数型, , 欲取RGB的十进制颜色 .子程序 取亮度, 整数型, 公开, 取指定颜色的亮度。成功返回(亮度) .参数 颜色, 整数型, , 欲取亮度的十进制颜色 .子程序 取指定坐标颜色, 整数型, 公开, 取屏幕中指定坐标的颜色(返回10进制颜色) .参数 横坐标, 整数型, , 指定屏幕横坐标 .参数 纵坐标, 整数型, , 指定屏幕纵坐标 .子程序 转换图像格式, 字节集, 公开, 直接在内存中转换图象格式,支持*.bmp *.jpg *.gif *.tiff *.png互转。成功返回(转换后的新图象字节集),失败返回(空字节集) .参数 图像数据, 字节集, , 欲转换的图像数据 .参数 转换格式, 整数型, , 欲转换的新图片数据格式。1=bmp 2=jpg 3=gif 4=tiff 5=png .程序集 网络操作, , 公开 .子程序 检测网络地址, 逻辑型, 公开, 成功连接返回(真),否则返回(假) .参数 网络地址, 文本型, , 如:http://www.dywt.com.cn 必须以http://开头 .子程序 取IE地址, 文本型, 公开, 获取IE地址栏文本内容,成功返回(地址栏内容),失败返回(空文本) .参数 窗口句柄, 整数型, , 欲取地址栏内容的IE浏览器的窗口句柄 .子程序 取计算机名, 文本型, 公开, 成功返回本地计算机名称,失败返回空字符串。 .子程序 取用户名, 文本型, 公开, 成功返回本地当前用户名称,失败返回空字符串。 .子程序 取远程网卡物理地址, 文本型, 公开, 取局域网计算机网卡MAC地址。成功返回(欲测试IP的MAC地址),失败返回(空文本) .参数 IP地址, 文本型, , 欲测试的局域网计算机的IP地址。如:192.168.0.1 , 192.168.1.5......等等 .程序集 文本操作, , 公开 .子程序 取空格前文本, 文本型, 公开 .参数 文本数据, 文本型 .子程序 取文本长度, 整数型, 公开, 返回(文本型数据的长度) .参数 文本数据, 文本型, , 参数指定欲检查其长度的文本数据 .子程序 删首尾空格, 文本型, 公开, 返回一个文本,其中包含被删除了首部及尾部全角或半角空格的指定文本 .参数 欲删除空格的文本, 文本型, , 通过“删首尾空”命令将一段文本中文字前和文字后的空格全部删除 .程序集 系统服务, , 公开 .子程序 枚举系统服务, 逻辑型, 公开 .参数 服务名称, 文本型, 数组, 数组变量,用于返回文本数组数据 .参数 显示名称, 文本型, 可空 数组, 数组变量,用于返回文本数组数据 .子程序 启动, 逻辑型, 公开, 成功返回(真),否则返回(假)。注意服务的依存关系! .参数 服务名称, 文本型, , 是服务名称,不是显示名称,切误搞错了 .子程序 取登入为, 文本型, 公开, 成功返回(LocalSystem=本地系统;NT AUTHORITY\LocalService=本地服务;NT Authority\NetworkService=网络服务) .参数 服务名称, 文本型, , 是服务名称,不是显示名称,切误搞错了 .子程序 取服务数量, 整数型, 公开, 成功返回(系统服务的总数量) .子程序 取服务状态, 整数型, 公开, 成功返回(1=已停止:2=准备开始;3=准备停止;4=正在运行;5=准备继续;6=准备暂停;7=已暂停) .参数 服务名称, 文本型, , 是服务名称,不是显示名称,切误搞错了 .子程序 取可执行文件的路径, 文本型, 公开, 成功返回(可执行文件的路径) .参数 服务名称, 文本型, , 是服务名称,不是显示名称,切误搞错了 .子程序 取描述, 文本型, 公开, 成功反回(服务的描述) .参数 服务名称, 文本型, , 是服务名称,不是显示名称,切误搞错了 .子程序 取启动类型, 整数型, 公开, 成功返回(2=自动;3=手动;4=已禁用) .参数 服务名称, 文本型, , 是服务名称,不是显示名称,切误搞错了 .子程序 取显示名称, 文本型, 公开, 成功返回(服务的显示名称) .参数 服务名称, 文本型, , 是服务名称,不是显示名称,切误搞错了 .子程序 停止, 逻辑型, 公开, 成功返回(真),否则返回(假)。注意服务的依存关系! .参数 服务名称, 文本型, , 是服务名称,不是显示名称,切误搞错了 .子程序 置登入为, 逻辑型, 公开, 成功返回(真),否则返回(假) .参数 服务名称, 文本型, , 是服务名称,不是显示名称,切误搞错了 .参数 服务类型, 文本型, , #本地系统;#本地服务;#网络服务 .子程序 置可执行文件的路径, 逻辑型, 公开, 成功返回(真),否则返回(假) .参数 服务名称, 文本型, , 是服务名称,不是显示名称,切误搞错了 .参数 路径, 文本型, , 自定义的路径 .子程序 置描述, 逻辑型, 公开, 成功返回(真),否则返回(假) .参数 服务名称, 文本型, , 是服务名称,不是显示名称,切误搞错了 .参数 描述, 文本型, , 自定义的描述 .子程序 置启动类型, 逻辑型, 公开, 成功返回(真),否则返回(假) .参数 服务名称, 文本型, , 是服务名称,不是显示名称,切误搞错了 .参数 启动类型, 整数型, , 2=自动;3=手动;4=已禁用 .子程序 置显示名称, 逻辑型, 公开, 成功返回(真),否则返回(假) .参数 服务名称, 文本型, , 是服务名称,不是显示名称,切误搞错了 .参数 显示名称, 文本型, , 自定义的显示名称 .程序集 注册表类, , 公开 .子程序 枚举子键, 整数型, 公开, 成功返回(子键数量),失败或没有子键返回(0) .参数 根目录, 整数型, , #HKEY_CLASSES_ROOT , #HKEY_CURRENT_USER , #HKEY_LOCAL_MACHINE , #HHKEY_USERS , #HKEY_CURRENT_CONFIG , #HKEY_DYN_DATA .参数 全路径注册项名, 文本型 .参数 子键名, 文本型, 参考 数组, 在此处存放自定义子键名储存数组文本型变量,请用循环取出 .参数 子键类型, 整数型, 参考 数组, 1=REG_SZ , 2=REG_EXPAND_SZ , 3=REG_BINARY , 4=REG_DWORD , 7=REG_MULTI_SZ .参数 子键, 字节集, 参考 数组, 在此处存放自定义子键储存数组文本型变量,请用循环取出 .子程序 枚举子项, 整数型, 公开, 成功返回(子项数量),失败或没有子项返回(0) .参数 根目录, 整数型, , #HKEY_CLASSES_ROOT , #HKEY_CURRENT_USER , #HKEY_LOCAL_MACHINE , #HHKEY_USERS , #HKEY_CURRENT_CONFIG , #HKEY_DYN_DATA .参数 全路径注册项名, 文本型 .参数 子项名, 文本型, 参考 数组, 在此处存放自定义子键名储存数组文本型变量,请用循环取出 .子程序 取数注册项, 长整数型, 公开, 读取注册表整数键,(REG_DWORD)类型键。成功返回(10进制键),失败返回(-1) .参数 根目录, 整数型, , #HKEY_CLASSES_ROOT , #HKEY_CURRENT_USER , #HKEY_LOCAL_MACHINE , #HHKEY_USERS , #HKEY_CURRENT_CONFIG , #HKEY_DYN_DATA .参数 全路径注册项名, 文本型, , 欲读取的注册项全路径 .参数 键名, 文本型, , 欲读取的注册表子键名称 .子程序 取文本注册项, 文本型, 公开, 读取注册表文本键,(REG_SZ , REG_MULTI_SZ , REG_EXPAND_SZ)类型键。成功返回(文本键),失败或无键返回(空文本) .参数 根目录, 整数型, , #HKEY_CLASSES_ROOT , #HKEY_CURRENT_USER , #HKEY_LOCAL_MACHINE , #HHKEY_USERS , #HKEY_CURRENT_CONFIG , #HKEY_DYN_DATA .参数 全路径注册项名, 文本型, , 欲读取的注册项全路径 .参数 键名, 文本型, , 欲读取的注册表子键名称 .子程序 取字节集注册项, 字节集, 公开, 成功返回(指定的字节集类型注册表项),失败或无键返回(空字节集) .参数 根目录, 整数型, , #HKEY_CLASSES_ROOT , #HKEY_CURRENT_USER , #HKEY_LOCAL_MACHINE , #HHKEY_USERS , #HKEY_CURRENT_CONFIG , #HKEY_DYN_DATA .参数 全路径注册项名, 文本型, , 欲读取的注册项全路径 .参数 键名, 文本型, , 欲读取的注册表子键名称 .DLL命令 _取窗口标题长度, 整数型, "user32.dll", "GetWindowTextLengthA", 公开 .参数 窗口句柄, 整数型 .常量 HKEY_CLASSES_ROOT, "2147483648", 公开, 注册表根目录&H80000000; .常量 HKEY_CURRENT_CONFIG, "2147483653", 公开, 注册表根目录&H80000005; .常量 HKEY_CURRENT_USER, "2147483649", 公开, 注册表根目录&H80000001; .常量 HKEY_DYN_DATA, "2147483654", 公开, 注册表根目录&H80000006; .常量 HKEY_LOCAL_MACHINE, "2147483650", 公开, 注册表根目录&H80000002; .常量 HKEY_USERS, "2147483651", 公开, 注册表根目录&H80000003; .常量 备份, "“SeBackupPrivilege”", 公开, 提升进程权限 .常量 本地服务, "“NT AUTHORITY\LocalService”", 公开, NT服务 .常量 本地系统, "“LocalSystem”", 公开, NT服务 .常量 调试, "“SeDebugPrivilege”", 公开, 提升进程权限 .常量 关机, "“SeShutdownPrivilege”", 公开, 提升进程权限 .常量 启动, "“SeRestorePrivilege”", 公开, 提升进程权限 .常量 网络服务, "“NT Authority\NetworkService”", 公开, NT服务
第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 0056 为程序设置版本和帮助信息 36 0057 动态链接库的创建与调用 36 0058 String类型和Pchar类型的用法和区别 36 0059 如何捕获异常 37 0060 TStrings与TStringList的使用 37 0061 如何实现窗体文件转换 37 第3章 程序算法 39 3.1 计算类算法 40 0062 如何计算1~100的阶乘和 40 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 4.9 文件操作的相关函数 87 0134 使用CopyFile函数复制文件 87 0135 使用CreateDir函数创建一个目录 88 0136 使用FileCreate函数创建一个图形文件 88 0137 使用GetCurrentDir函数返回当前目录 89 0138 在指定路径中搜索指定的文件 89 0139 使用FileExists函数判断指定文件是否存在 90 0140 使用FileGetAttr函数返回文件的属性 90 0141 使用FileGetDate函数返回文件的修改日期 90 0142 使用FileWrite函数将缓冲区中的内容写入文件 91 4.10 其他函数 91 0143 使用Random函数产生7个随机数 91 0144 使用DiskFree函数返回磁盘驱动器的剩余空间 91 0145 如何使用Printer函数 92 0146 使用SetPriner函数修改打印机信息 93 0147 使用BeginThread函数产生线程 94 0148 使用EndThread过程终止一个线程 95 0149 使用ForegroundTask函数检测线程是否运行 96 第5章 字符与字符串处理技术 99 5.1 ASCII码与编码转换 100 0150 如何获得汉字的区位码 100 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 0204 如何在DataGrid中嵌入LookupComboBox 135 0205 在DBGrid中设置不滚动的列 136 0206 如何在DBGrid中实现复制、粘贴功能 137 0207 在DBGrid中将选中的多行删除 137 0208 在DataGrid中如何使标题文字居中 138 0209 如何把ListBox中的内容拖曳到另一个ListBox中 139 0210 把DBGrid中的数据赋给数组 139 0211 如何获取DataGrid单元格中的内容 140 0212 如何锁定文本框中的文本 141 0213 如何设置光标到文本框的末尾 141 0214 如何改变表格列的矩形区域颜色 142 0215 控制在文本框中只能输入两位小数 143 0216 如何把选择的文件图标显示在列表中 143 0217 根据表格中的数据长度自动调整表格宽度 144 7.2 ADO数据处理技术 145 0218 如何把ADO中的数据导入到ListBox中 145 0219 使用SQL语句保存数据 146 0220 使用赋方式保存数据 147 0221 当ADO循环删除数据时需要注意的问题 147 0222 把Excel中的数据保存到数据库中 147 0223 怎样弹出ConnectionString设置页 148 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 0316 使用Canvas美化列表项 206 0317 利用Canvas在Chart组件中画一幅图片 207 0318 如何为TListBox添加水平滚动条 207 0319 折行显示按钮标题 208 0320 为组件制作立体效果 208 0321 利用ActiveX控件实现Office助手 209 9.2 菜单、工具栏、状态栏 209 0322 在PopupMenu中动态加入新菜单 209 0323 在状态栏中显示进度条组件 210 0324 为工具栏添加背景图片 210 9.3 文本框及列表框的应用技巧 211 0325 使TEdit组件获取焦点后将文本全部选中 211 0326 使TEdit组件获取焦点时改变文本框颜色 211 0327 查找列表框中的选项 212 0328 在ComboBox组件中显示QQ头像 212 0329 为Edit组件添加列表选择框 213 0330 在ListBox中显示位图 214 0331 获取TMemo中的可见行数 214 0332 如何在Memo组件上实现光标定位 215 0333 控制Memo组件中的滚动条 216 9.4 数据感知控件应用技巧 217 0334 如何在DBGrid中显示不同的记录颜色 217 0335 单击DBGrid标题进行排序 218 0336 使DBGrid支持鼠标滚轮 218 0337 在DBGrid中添加静态字段 218 0338 在DBGrid中实现下拉列表 219 0339 改变DBGrid被选中时的颜色 220 0340 用TDBNavigator组件删除数据显示自定义信息 220 0341 使用Excel组件将数据导出为Excel格式 221 9.5 表格组件使用技巧 222 0342 将StringGrid中指定行的数据添加到Memo中 222 0343 使TStringGrid组件自动移动及增加行 223 0344 单击StringGrid列进行排序 224 9.6 TreeView组件使用技巧 225 0345 如何动态创建TreeView节点 225 0346 如何将TreeView中的节点全部选中 226 0347 将菜单项添加到Tree View中 226 0348 使TreeView组件与数据库关联 227 0349 应用TTreeView组件遍历磁盘目录 228 0350 在TreeView组件中实现拖曳操作 229 9.7 ListView组件使用技巧 229 0351 向TListView组件中添加项目 229 0352 删除ListView中的选项 230 0353 实现ListView滚动 230 0354 将数组中的数遍历到ListView中 231 0355 ListView组件的高级应用 231 0356 使ListView的不同列显示不同颜色 232 0357 对ListView中的项目进行汇总 233 0358 单击列表标题进行排序 233 9.8 应用组件制作导航 234 0359 用ListView制作导航界面 234 0360 利用Panel组件制作QQ导航栏 235 9.9 其他组件使用技巧 237 0361 动态创建组件 237 0362 创建控件数组 237 0363 用组件来移动窗体 238 0364 实现组件的批量访问 238 0365 使同类组件进行同样的操作 239 0366 使用Ttrackbar组件改变画布颜色 239 0367 设置TopAxis属性在图表上面显示标签 240 0368 动态向ImageList组件中添加图标 240 0369 设置DateTimePicker组件的外观颜色 241 0370 利用Timer组件显示当前系统时间 241 0371 获取用户在Month Calendar组件中选择的日期 242 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 0396 如何屏蔽Win键 261 0397 如何控制键盘指示灯 261 0398 如何屏蔽Sleep和Wake Up键 262 0399 设置自己的热键 262 0400 用键盘钩子封锁Win dows热键 263 0401 如何用Esc键退出程序 263 0402 在TDBGrid中用回车键移至下一个字段 264 0403 用Esc键停止循环 264 0404 如何判断左右 Shift 按键 265 0405 替换一个键盘按钮 265 10.4 鼠标的其他应用技巧 266 0406 实现超级链接效果 266 0407 用鼠标隐藏显示窗口(仿QQ) 267 0408 获取鼠标的桌面坐标 267 0409 用鼠标双击TStatusBar时判断是哪一个Panels 268 0410 使Canvas上直线的一个端点跟着鼠标跑 268 第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 0473 如何实现十字光标定位 316 0474 制作旋转的文字 317 0475 波形图的绘制 318 0476 制作动画背景的窗体 319 0477 如何涂抹窗体 320 0478 如何万花筒 320 13.3 图片格式转换 321 0479 ICO转换成位图(BMP) 321 0480 JPG转换成位图(BMP) 322 0481 WMF转换成位图(BMP) 323 0482 位图(BMP)转换成JPG 323 0483 位图(BMP)转换成WMF 324 0484 批量转换图像 324 13.4 颜色格式的转换 326 0485 将TColor换算成RGB 326 0486 将TColor换算成HTML 326 0487 将HTML换算成TColor 327 0488 将CMYK换算成RGB 327 0489 将RGB换算成CMYK 328 0490 将RGB换算成TColor 329 13.5 图片的滤镜效果 329 0491 将图片以灰度形式显示 329 0492 提高图像的亮度 330 0493 图像浮雕效果 331 0494 图片的反色效果 332 13.6 翻转与缩放 333 0495 如何放大和缩小图像 333 0496 实现图形反转 333 0497 如何旋转图像 334 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 0523 在TMainMenu组件上绘制图片 356 第14章 动画与多媒体 357 14.1 动画播放 358 0524 单帧动画播放 358 0525 多帧动画播放 358 0526 模拟石英钟 360 0527 设计字幕程序 361 0528 设计屏幕保护程序 361 14.2 文字效果 363 0529 文字的立体字效果 363 0530 文字滚动效果 364 0531 文字旋转效果 365 0532 制作空心文字 365 14.3 播放媒体文件 366 0533 播放AVI文件 366 0534 播放Flash动画 367 0535 播放WAV文件 368 0536 播放GIF文件 368 14.4 利用API播放媒体 369 0537 与多媒体相关的API函数 369 0538 利用sndPlaySound函数播放音频文件 370 0539 利用mciSendString函数播放AVI 370 14.5 音频及视频 372 0540 使电脑发出声音 372 0541 显示MP3文件的播放时间 372 0542 显示文件的播放进度 373 0543 循环播放媒体文件 374 0544 显示AVI文件的播放帧数 375 0545 指定视频显示窗口 375 0546 全屏播放视频文件 376 0547 设计一个精美的播放器 377 0548 播放背景音乐 380 0549 利用RealPlayer播放器播放音乐 381 14.6 媒体控制 382 0550 如何实现静音与声道控制 382 0551 调用声音控制对话框 383 0552 使播放的Flash随窗口大小改变 383 0553 打开和关闭光驱 383 第15章 API函数 385 15.1 操作系统 386 0554 关闭显示器 386 0555 获取系统启动模式 386 0556 使程序不出现在任务栏上 387 0557 修改系统时间 387 0558 修改系统颜色 388 0559 使用API函数拨号 389 0560 获取内存使用状态的信息 389 0561 清空回收站 390 0562 设置系统日期 390 0563 如何设定屏幕分辨率设定 391 0564 修改系统的刷新率 391 0565 隐藏桌面图标 392 0566 获取Windows主题文件 392 15.2 窗体 393 0567 利用API创建窗体 393 0568 利用API创建画刷 394 0569 利用API绘制弧形 394 0570 利用API控制窗体显示 395 0571 制作闪动标题的窗体 396 0572 拖动无标题栏窗体 396 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
第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 0056 为程序设置版本和帮助信息 36 0057 动态链接库的创建与调用 36 0058 String类型和Pchar类型的用法和区别 36 0059 如何捕获异常 37 0060 TStrings与TStringList的使用 37 0061 如何实现窗体文件转换 37 第3章 程序算法 39 3.1 计算类算法 40 0062 如何计算1~100的阶乘和 40 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 4.9 文件操作的相关函数 87 0134 使用CopyFile函数复制文件 87 0135 使用CreateDir函数创建一个目录 88 0136 使用FileCreate函数创建一个图形文件 88 0137 使用GetCurrentDir函数返回当前目录 89 0138 在指定路径中搜索指定的文件 89 0139 使用FileExists函数判断指定文件是否存在 90 0140 使用FileGetAttr函数返回文件的属性 90 0141 使用FileGetDate函数返回文件的修改日期 90 0142 使用FileWrite函数将缓冲区中的内容写入文件 91 4.10 其他函数 91 0143 使用Random函数产生7个随机数 91 0144 使用DiskFree函数返回磁盘驱动器的剩余空间 91 0145 如何使用Printer函数 92 0146 使用SetPriner函数修改打印机信息 93 0147 使用BeginThread函数产生线程 94 0148 使用EndThread过程终止一个线程 95 0149 使用ForegroundTask函数检测线程是否运行 96 第5章 字符与字符串处理技术 99 5.1 ASCII码与编码转换 100 0150 如何获得汉字的区位码 100 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 0204 如何在DataGrid中嵌入LookupComboBox 135 0205 在DBGrid中设置不滚动的列 136 0206 如何在DBGrid中实现复制、粘贴功能 137 0207 在DBGrid中将选中的多行删除 137 0208 在DataGrid中如何使标题文字居中 138 0209 如何把ListBox中的内容拖曳到另一个ListBox中 139 0210 把DBGrid中的数据赋给数组 139 0211 如何获取DataGrid单元格中的内容 140 0212 如何锁定文本框中的文本 141 0213 如何设置光标到文本框的末尾 141 0214 如何改变表格列的矩形区域颜色 142 0215 控制在文本框中只能输入两位小数 143 0216 如何把选择的文件图标显示在列表中 143 0217 根据表格中的数据长度自动调整表格宽度 144 7.2 ADO数据处理技术 145 0218 如何把ADO中的数据导入到ListBox中 145 0219 使用SQL语句保存数据 146 0220 使用赋方式保存数据 147 0221 当ADO循环删除数据时需要注意的问题 147 0222 把Excel中的数据保存到数据库中 147 0223 怎样弹出ConnectionString设置页 148 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 0316 使用Canvas美化列表项 206 0317 利用Canvas在Chart组件中画一幅图片 207 0318 如何为TListBox添加水平滚动条 207 0319 折行显示按钮标题 208 0320 为组件制作立体效果 208 0321 利用ActiveX控件实现Office助手 209 9.2 菜单、工具栏、状态栏 209 0322 在PopupMenu中动态加入新菜单 209 0323 在状态栏中显示进度条组件 210 0324 为工具栏添加背景图片 210 9.3 文本框及列表框的应用技巧 211 0325 使TEdit组件获取焦点后将文本全部选中 211 0326 使TEdit组件获取焦点时改变文本框颜色 211 0327 查找列表框中的选项 212 0328 在ComboBox组件中显示QQ头像 212 0329 为Edit组件添加列表选择框 213 0330 在ListBox中显示位图 214 0331 获取TMemo中的可见行数 214 0332 如何在Memo组件上实现光标定位 215 0333 控制Memo组件中的滚动条 216 9.4 数据感知控件应用技巧 217 0334 如何在DBGrid中显示不同的记录颜色 217 0335 单击DBGrid标题进行排序 218 0336 使DBGrid支持鼠标滚轮 218 0337 在DBGrid中添加静态字段 218 0338 在DBGrid中实现下拉列表 219 0339 改变DBGrid被选中时的颜色 220 0340 用TDBNavigator组件删除数据显示自定义信息 220 0341 使用Excel组件将数据导出为Excel格式 221 9.5 表格组件使用技巧 222 0342 将StringGrid中指定行的数据添加到Memo中 222 0343 使TStringGrid组件自动移动及增加行 223 0344 单击StringGrid列进行排序 224 9.6 TreeView组件使用技巧 225 0345 如何动态创建TreeView节点 225 0346 如何将TreeView中的节点全部选中 226 0347 将菜单项添加到Tree View中 226 0348 使TreeView组件与数据库关联 227 0349 应用TTreeView组件遍历磁盘目录 228 0350 在TreeView组件中实现拖曳操作 229 9.7 ListView组件使用技巧 229 0351 向TListView组件中添加项目 229 0352 删除ListView中的选项 230 0353 实现ListView滚动 230 0354 将数组中的数遍历到ListView中 231 0355 ListView组件的高级应用 231 0356 使ListView的不同列显示不同颜色 232 0357 对ListView中的项目进行汇总 233 0358 单击列表标题进行排序 233 9.8 应用组件制作导航 234 0359 用ListView制作导航界面 234 0360 利用Panel组件制作QQ导航栏 235 9.9 其他组件使用技巧 237 0361 动态创建组件 237 0362 创建控件数组 237 0363 用组件来移动窗体 238 0364 实现组件的批量访问 238 0365 使同类组件进行同样的操作 239 0366 使用Ttrackbar组件改变画布颜色 239 0367 设置TopAxis属性在图表上面显示标签 240 0368 动态向ImageList组件中添加图标 240 0369 设置DateTimePicker组件的外观颜色 241 0370 利用Timer组件显示当前系统时间 241 0371 获取用户在Month Calendar组件中选择的日期 242 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 0396 如何屏蔽Win键 261 0397 如何控制键盘指示灯 261 0398 如何屏蔽Sleep和Wake Up键 262 0399 设置自己的热键 262 0400 用键盘钩子封锁Win dows热键 263 0401 如何用Esc键退出程序 263 0402 在TDBGrid中用回车键移至下一个字段 264 0403 用Esc键停止循环 264 0404 如何判断左右 Shift 按键 265 0405 替换一个键盘按钮 265 10.4 鼠标的其他应用技巧 266 0406 实现超级链接效果 266 0407 用鼠标隐藏显示窗口(仿QQ) 267 0408 获取鼠标的桌面坐标 267 0409 用鼠标双击TStatusBar时判断是哪一个Panels 268 0410 使Canvas上直线的一个端点跟着鼠标跑 268 第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 0473 如何实现十字光标定位 316 0474 制作旋转的文字 317 0475 波形图的绘制 318 0476 制作动画背景的窗体 319 0477 如何涂抹窗体 320 0478 如何万花筒 320 13.3 图片格式转换 321 0479 ICO转换成位图(BMP) 321 0480 JPG转换成位图(BMP) 322 0481 WMF转换成位图(BMP) 323 0482 位图(BMP)转换成JPG 323 0483 位图(BMP)转换成WMF 324 0484 批量转换图像 324 13.4 颜色格式的转换 326 0485 将TColor换算成RGB 326 0486 将TColor换算成HTML 326 0487 将HTML换算成TColor 327 0488 将CMYK换算成RGB 327 0489 将RGB换算成CMYK 328 0490 将RGB换算成TColor 329 13.5 图片的滤镜效果 329 0491 将图片以灰度形式显示 329 0492 提高图像的亮度 330 0493 图像浮雕效果 331 0494 图片的反色效果 332 13.6 翻转与缩放 333 0495 如何放大和缩小图像 333 0496 实现图形反转 333 0497 如何旋转图像 334 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 0523 在TMainMenu组件上绘制图片 356 第14章 动画与多媒体 357 14.1 动画播放 358 0524 单帧动画播放 358 0525 多帧动画播放 358 0526 模拟石英钟 360 0527 设计字幕程序 361 0528 设计屏幕保护程序 361 14.2 文字效果 363 0529 文字的立体字效果 363 0530 文字滚动效果 364 0531 文字旋转效果 365 0532 制作空心文字 365 14.3 播放媒体文件 366 0533 播放AVI文件 366 0534 播放Flash动画 367 0535 播放WAV文件 368 0536 播放GIF文件 368 14.4 利用API播放媒体 369 0537 与多媒体相关的API函数 369 0538 利用sndPlaySound函数播放音频文件 370 0539 利用mciSendString函数播放AVI 370 14.5 音频及视频 372 0540 使电脑发出声音 372 0541 显示MP3文件的播放时间 372 0542 显示文件的播放进度 373 0543 循环播放媒体文件 374 0544 显示AVI文件的播放帧数 375 0545 指定视频显示窗口 375 0546 全屏播放视频文件 376 0547 设计一个精美的播放器 377 0548 播放背景音乐 380 0549 利用RealPlayer播放器播放音乐 381 14.6 媒体控制 382 0550 如何实现静音与声道控制 382 0551 调用声音控制对话框 383 0552 使播放的Flash随窗口大小改变 383 0553 打开和关闭光驱 383 第15章 API函数 385 15.1 操作系统 386 0554 关闭显示器 386 0555 获取系统启动模式 386 0556 使程序不出现在任务栏上 387 0557 修改系统时间 387 0558 修改系统颜色 388 0559 使用API函数拨号 389 0560 获取内存使用状态的信息 389 0561 清空回收站 390 0562 设置系统日期 390 0563 如何设定屏幕分辨率设定 391 0564 修改系统的刷新率 391 0565 隐藏桌面图标 392 0566 获取Windows主题文件 392 15.2 窗体 393 0567 利用API创建窗体 393 0568 利用API创建画刷 394 0569 利用API绘制弧形 394 0570 利用API控制窗体显示 395 0571 制作闪动标题的窗体 396 0572 拖动无标题栏窗体 396 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
1. 直方图均衡化的 Matlab 实现 1.1 imhist 函数 功能:计算和显示图像的色彩直方图 格式:imhist(I,n) imhist(X,map) 说明:imhist(I,n) 其中,n 为指定的灰度级数目,缺省为256;imhist(X,map) 就算和显示索引色图像 X 的直方图,map 为调色板。用 stem(x,counts) 同样可以显示直方图。 1.2 imcontour 函数 功能:显示图像的等灰度图 格式:imcontour(I,n),imcontour(I,v) 说明:n 为灰度级的个数,v 是有用户指定所选的等灰度级向量。 1.3 imadjust 函数 功能:通过直方图变换调整对比度 格式:J=imadjust(I,[low high],[bottom top],gamma) newmap=imadjust(map,[low high],[bottom top],gamma) 说明:J=imadjust(I,[low high],[bottom top],gamma) 其中,gamma 为校正量r,[low high] 为原图像中要变换的灰度范围,[bottom top] 指定了变换后的灰度范围;newmap=imadjust(map,[low high],[bottom top],gamma) 调整索引色图像的调色板 map 。此时若 [low high] 和 [bottom top] 都为2×3的矩阵,则分别调整 R、G、B 3个分量。 1.4 histeq 函数 功能:直方图均衡化 格式:J=histeq(I,hgram) J=histeq(I,n) [J,T]=histeq(I,...) newmap=histeq(X,map,hgram) newmap=histeq(X,map) [new,T]=histeq(X,...) 说明:J=histeq(I,hgram) 实现了所谓“直方图规定化”,即将原是图象 I 的直方图变换成用户指定的向量 hgram 。hgram 中的每一个元素 都在 [0,1] 中;J=histeq(I,n) 指定均衡化后的灰度级数 n ,缺省为 64;[J,T]=histeq(I,...) 返回从能将图像 I 的灰度直方图变换成 图像 J 的直方图的变换 T ;newmap=histeq(X,map) 和 [new,T]=histeq(X,...) 是针对索引色图像调色板的直方图均衡。 2. 噪声及其噪声的 Matlab 实现 imnoise 函数 格式:J=imnoise(I,type) J=imnoise(I,type,parameter) 说明:J=imnoise(I,type) 返回对图像 I 添加典型噪声后的有噪图像 J ,参数 type 和 parameter 用于确定噪声的类型和相应的参数。 3. 图像滤波的 Matlab 实现 3.1 conv2 函数 功能:计算二维卷积 格式:C=conv2(A,B) C=conv2(Hcol,Hrow,A) C=conv2(...,'shape') 说明:对于 C=conv2(A,B) ,conv2 的算矩阵 A 和 B 的卷积,若 [Ma,Na]=size(A), [Mb,Nb]=size(B), 则 size(C)=[Ma+Mb-1,Na+Nb-1]; C=conv2(Hcol,Hrow,A) 中,矩阵 A 分别与 Hcol 向量在列方向和 Hrow 向量在行方向上进行卷积;C=conv2(...,'shape') 用来指定 conv2 返回二维卷积结果部分,参数 shape 可取如下: 》full 为缺省,返回二维卷积的全部结果; 》same 返回二维卷积结果中与 A 大小相同的中间部分; valid 返回在卷积过程中,未使用边缘补 0 部分进行计算的卷积结果部分,当 size(A)>size(B) 时,size(C)=[Ma-Mb+1,Na-Nb+1] 。 3.2 conv 函数 功能:计算多维卷积 格式:与 conv2 函数相同 3.3 filter2函数 功能:计算二维线型数字滤波,它与函数 fspecial 连用 格式:Y=filter2(B,X) Y=filter2(B,X,'shape') 说明:对于 Y=filter2(B,X) ,filter2 使用矩阵 B 中的二维 FIR 滤波器对数据 X 进行滤波,结果 Y 是通过二维互相关计算出来的,其大 小与 X 一样;对于 Y=filter2(B,X,'shape') ,filter2 返回的 Y 是通过二维互相关计算出来的,其大小由参数 shape 确定,其取如下 : 》full 返回二维相关的全部结果,size(Y)>size(X); 》same 返回二维互相关结果的中间部分,Y 与 X 大小相同; 》valid 返回在二维互相关过程中,未使用边缘补 0 部分进行计算的结果部分,有 size(Y)值滤波器 H=fspecial('unsharp',alpha) 模糊对比增强滤波器 说明:对于形式 H=fspecial(type) ,fspecial 函数产生一个由 type 指定的二维滤波器 H ,返回的 H 常与其它滤波器搭配使用。 4. 彩色增强的 Matlab 实现 4.1 imfilter函数 功能:真彩色增强 格式:B=imfilter(A,h) 说明:将原始图像 A 按指定的滤波器 h 进行滤波增强处理,增强后的图像 B 与 A 的尺寸和类型相同 图像的变换 1. 离散傅立叶变换的 Matlab 实现 Matlab 函数 fft、fft2 和 fftn 分别可以实现一维、二维和 N 维 DFT 算法;而函数 ifft、ifft2 和 ifftn 则用来计算反 DFT 。 这些函数的调用格式如下: A=fft(X,N,DIM) 其中,X 表示输入图像;N 表示采样间隔点,如果 X 小于该数,那么 Matlab 将会对 X 进行零填充,否则将进行截取,使之长度为 N ;DIM 表示要进行离散傅立叶变换。 A=fft2(X,MROWS,NCOLS) 其中,MROWS 和 NCOLS 指定对 X 进行零填充后的 X 大小。 A=fftn(X,SIZE) 其中,SIZE 是一个向量,它们每一个元素都将指定 X 相应维进行零填充后的长度。 函数 ifft、ifft2 和 ifftn的调用格式于对应的离散傅立叶变换函数一致。 例子:图像的二维傅立叶频谱 % 读入原始图像 I=imread('lena.bmp'); imshow(I) % 求离散傅立叶频谱 J=fftshift(fft2(I)); figure; imshow(log(abs(J)),[8,10]) 2. 离散余弦变换的 Matlab 实现 2.1. dCT2 函数 功能:二维 DCT 变换 格式:B=dct2(A) B=dct2(A,m,n) B=dct2(A,[m,n]) 说明:B=dct2(A) 计算 A 的 DCT 变换 B ,A 与 B 的大小相同;B=dct2(A,m,n) 和 B=dct2(A,[m,n]) 通过对 A 补 0 或剪裁,使 B 的大 小为 m×n。 2.2. dict2 函数 功能:DCT 反变换 格式:B=idct2(A) B=idct2(A,m,n) B=idct2(A,[m,n]) 说明:B=idct2(A) 计算 A 的 DCT 反变换 B ,A 与 B 的大小相同;B=idct2(A,m,n) 和 B=idct2(A,[m,n]) 通过对 A 补 0 或剪裁,使 B 的大小为 m×n。 2.3. dctmtx函数 功能:计算 DCT 变换矩阵 格式:D=dctmtx(n) 说明:D=dctmtx(n) 返回一个 n×n 的 DCT 变换矩阵,输出矩阵 D 为 double 类型。 3. 图像小波变换的 Matlab 实现 3.1 一维小波变换的 Matlab 实现 (1) dwt 函数 功能:一维离散小波变换 格式:[cA,cD]=dwt(X,'wname') [cA,cD]=dwt(X,Lo_D,Hi_D) 说明:[cA,cD]=dwt(X,'wname') 使用指定的小波基函数 'wname' 对信号 X 进行分解,cA、cD 分别为近似分量和细节分量;[cA,cD]=dwt(X,Lo_D,Hi_D) 使用指定的滤波器组 Lo_D、Hi_D 对信号进行分解。 (2) idwt 函数 功能:一维离散小波反变换 格式:X=idwt(cA,cD,'wname') X=idwt(cA,cD,Lo_R,Hi_R) X=idwt(cA,cD,'wname',L) X=idwt(cA,cD,Lo_R,Hi_R,L) 说明:X=idwt(cA,cD,'wname') 由近似分量 cA 和细节分量 cD 经小波反变换重构原始信号 X 。 'wname' 为所选的小波函数 X=idwt(cA,cD,Lo_R,Hi_R) 用指定的重构滤波器 Lo_R 和 Hi_R 经小波反变换重构原始信号 X 。 X=idwt(cA,cD,'wname',L) 和 X=idwt(cA,cD,Lo_R,Hi_R,L) 指定返回信号 X 中心附近的 L 个点。 3.2 二维小波变换的 Matlab 实现 二维小波变换的函数 ------------------------------------------------- 函数名 函数功能 --------------------------------------------------- dwt2 二维离散小波变换 wavedec2 二维信号的多层小波分解 idwt2 二维离散小波反变换 waverec2 二维信号的多层小波重构 wrcoef2 由多层小波分解重构某一层的分解信号 upcoef2 由多层小波分解重构近似分量或细节分量 detcoef2 提取二维信号小波分解的细节分量 appcoef2 提取二维信号小波分解的近似分量 upwlev2 二维小波分解的单层重构 dwtpet2 二维周期小波变换 idwtper2 二维周期小波反变换 ------------------------------------------------------------- (1) wcodemat 函数 功能:对数据矩阵进行伪彩色编码 格式:Y=wcodemat(X,NB,OPT,ABSOL) Y=wcodemat(X,NB,OPT) Y=wcodemat(X,NB) Y=wcodemat(X) 说明:Y=wcodemat(X,NB,OPT,ABSOL) 返回数据矩阵 X 的编码矩阵 Y ;NB 伪编码的最大,即编码范围为 0~NB,缺省 NB=16; OPT 指定了编码的方式(缺省为 'mat'),即: OPT='row' ,按行编码 OPT='col' ,按列编码 OPT='mat' ,按整个矩阵编码 ABSOL 是函数的控制参数(缺省为 '1'),即: ABSOL=0 时,返回编码矩阵 ABSOL=1 时,返回数据矩阵的绝对 ABS(X) (2) dwt2 函数 功能:二维离散小波变换 格式:[cA,cH,cV,cD]=dwt2(X,'wname') [cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D) 说明:[cA,cH,cV,cD]=dwt2(X,'wname')使用指定的小波基函数 'wname' 对二维信号 X 进行二维离散小波变幻;cA,cH,cV,cD 分别为近似分 量、水平细节分量、垂直细节分量和对角细节分量;[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D) 使用指定的分解低通和高通滤波器 Lo_D 和 Hi_D 分 解信号 X 。 (3) wavedec2 函数 功能:二维信号的多层小波分解 格式:[C,S]=wavedec2(X,N,'wname') [C,S]=wavedec2(X,N,Lo_D,Hi_D) 说明:[C,S]=wavedec2(X,N,'wname') 使用小波基函数 'wname' 对二维信号 X 进行 N 层分解;[C,S]=wavedec2(X,N,Lo_D,Hi_D) 使用指定 的分解低通和高通滤波器 Lo_D 和 Hi_D 分解信号 X 。 (4) idwt2 函数 功能:二维离散小波反变换 格式:X=idwt2(cA,cH,cV,cD,'wname') X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R) X=idwt2(cA,cH,cV,cD,'wname',S) X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S) 说明:X=idwt2(cA,cH,cV,cD,'wname') 由信号小波分解的近似信号 cA 和细节信号 cH、cH、cV、cD 经小波反变换重构原信号 X ;X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R) 使用指定的重构低通和高通滤波器 Lo_R 和 Hi_R 重构原信号 X ;X=idwt2(cA,cH,cV,cD,'wname',S) 和 X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S) 返回中心附近的 S 个数据点。 (5) waverec2 函数 说明:二维信号的多层小波重构 格式:X=waverec2(C,S,'wname') X=waverec2(C,S,Lo_R,Hi_R) 说明:X=waverec2(C,S,'wname') 由多层二维小波分解的结果 C、S 重构原始信号 X ,'wname' 为使用的小波基函数;X=waverec2(C,S,Lo_R,Hi_R) 使用重构低通和高通滤波器 Lo_R 和 Hi_R 重构原信号。 图像处理工具箱 1. 图像和图像数据 缺省情况下,MATLAB将图像中的数据存储为双精度类型(double),64位浮点 数,所需存储量很大;MATLAB还支持另一种类型无符号整型(uint8),即图像矩 阵中每个数据占用1个字节。 在使用MATLAB工具箱时,一定要注意函数所要求的参数类型。另外,uint8 与double两种类型数据的域不同,编程需注意域转换。 从uint8到double的转换 --------------------------------------------- 图像类型 MATLAB语句 --------------------------------------------- 索引色 B=double(A)+1 索引色或真彩色 B=double(A)/255 二图像 B=double(A) --------------------------------------------- 从double到uint8的转换 --------------------------------------------- 图像类型 MATLAB语句 --------------------------------------------- 索引色 B=uint8(round(A-1)) 索引色或真彩色 B=uint8(round(A*255)) 二图像 B=logical(uint8(round(A))) --------------------------------------------- 2. 图像处理工具箱所支持的图像类型 2.1 真彩色图像 R、G、B三个分量表示一个像素的颜色。如果要读取图像中(100,50)处的像素, 可查看三元数据(100,50,1:3)。 真彩色图像可用双精度存储,亮度范围是[0,1];比较符合习惯的存储方法是用无 符号整型存储,亮度范围[0,255] 2.2 索引色图像 包含两个结构,一个是调色板,另一个是图像数据矩阵。调色板是一个有3列和若干行 的色彩映象矩阵,矩阵每行代表一种颜色,3列分别代表红、绿、蓝色强度的双精度数。 注意:MATLAB中调色板色彩强度[0,1],0代表最暗,1代表最亮。 常用颜色的RGB -------------------------------------------- 颜色 R G B 颜色 R G B -------------------------------------------- 黑 0 0 1 洋红 1 0 1 白 1 1 1 青蓝 0 1 1 红 1 0 0 天蓝 0.67 0 1 绿 0 1 0 橘黄 1 0.5 0 蓝 0 0 1 深红 0.5 0 0 黄 1 1 0 灰 0.5 0.5 0.5 -------------------------------------------- 产生标准调色板的函数 ------------------------------------------------- 函数名 调色板 ------------------------------------------------- Hsv 色彩饱和度,以红色开始,并以红色结束 Hot 黑色-红色-黄色-白色 Cool 青蓝和洋红的色度 Pink 粉红的色度 Gray 线型灰度 Bone 带蓝色的灰度 Jet Hsv的一种变形,以蓝色开始,以蓝色结束 Copper 线型铜色度 Prim 三棱镜,交替为红、橘黄、黄、绿和天蓝 Flag 交替为红、白、蓝和黑 -------------------------------------------------- 缺省情况下,调用上述函数灰产生一个64×3的调色板,用户也可指定调色板大小。 索引色图像数据也有double和uint8两种类型。 当图像数据为double类型时,1代表调色板中的第1行,2代表第2行…… 如果图像数据为uint8类型,0代表调色板的第一行,,1代表第2行…… 2.3 灰度图像 存储灰度图像只需要一个数据矩阵。 数据类型可以是double,[0,1];也可以是uint8,[0,255] 2.4 二图像 二图像只需一个数据矩阵,每个像素只有两个灰度,可以采用uint8或double类型存储。 MATLAB工具箱中以二图像作为返回结果的函数都使用uint8类型。 2.5 图像序列 MATLAB工具箱支持将多帧图像连接成图像序列。 图像序列是一个4维数组,图像帧的序号在图像的长、宽、颜色深度之后构成第4维。 分散的图像也可以合并成图像序列,前提是各图像尺寸必须相同,若是索引色图像, 调色板也必须相同。 可参考cat()函数 A=cat(4,A1,A2,A3,A4,A5) 3. MATLAB图像类型转换 图像类型转换函数 --------------------------------------------------------------------------- 函数名 函数功能 --------------------------------------------------------------------------- dither 图像抖动,将灰度图变成二图,或将真彩色图像抖动成索引色图像 gray2ind 将灰度图像转换成索引图像 grayslice 通过设定阈将灰度图像转换成索引色图像 im2bw 通过设定亮度阈将真彩色、索引色、灰度图转换成二图 ind2gray 将索引色图像转换成灰度图像 ind2rgb 将索引色图像转换成真彩色图像 mat2gray 将一个数据矩阵转换成一副灰度图 rgb2gray 将一副真彩色图像转换成灰度图像 rgb2ind 将真彩色图像转换成索引色图像 ---------------------------------------------------------------------------- 4. 图像文件的读写和查询 4.1 图形图像文件的读取 利用函数imread()可完成图形图像文件的读取,语法: A=imread(filename,fmt) [X,map]=imread(filename,fmt) [...]=imread(filename) [...]=imread(filename,idx) (只对TIF格式的文件) [...]=imread(filename,ref) (只对HDF格式的文件) 通常,读取的大多数图像均为8bit,当这些图像加载到内存中时,Matlab就将其存放 在类uint8中。此为Matlab还支持16bit的PNG和TIF图像,当读取这类文件时,Matlab就将 其存贮在uint16中。 注意:对于索引图像,即使图像阵列的本身为类uint8或类uint16,imread函数仍将 颜色映象表读取并存贮到一个双精度的浮点类型的阵列中。 4.2 图形图像文件的写入 使用imwrite函数,语法如下: imwrite(A,filename,fmt) imwrite(X,map,filename,fmt) imwrite(...,filename) imwrite(...,parameter,value) 当利用imwrite函数保存图像时,Matlab缺省的方式是将其简化道uint8的数据格式。 4.3 图形图像文件信息的查询 imfinfo()函数 5. 图像文件的显示 5.1 索引图像及其显示 方法一: image(X) colormap(map) 方法二: imshow(X,map) 5.2 灰度图像及其显示 Matlab 7.0 中,要显示一副灰度图像,可以调用函数 imshow 或 imagesc (即 imagescale,图像缩放函数) (1) imshow 函数显示灰度图像 使用 imshow(I) 或 使用明确指定的灰度级书目:imshow(I,32) 由于Matlab自动对灰度图像进行标度以适合调色板的范围,因而可以使用自定义 大小的调色板。其调用格式如下: imshow(I,[low,high]) 其中,low 和 high 分别为数据数组的最小和最大。 (2) imagesc 函数显示灰度图像 下面的代码是具有两个输入参数的 imagesc 函数显示一副灰度图像 imagesc(1,[0,1]); colormap(gray); imagesc 函数中的第二个参数确定灰度范围。灰度范围中的第一个(通常是0), 对应于颜色映象表中的第一个颜色),第二个(通常是1)则对应与颜色映象表 中的最后一个颜色)。灰度范围中间的则线型对应与颜色映象表中剩余的颜色)。 在调用 imagesc 函数时,若只使用一个参数,可以用任意灰度范围显示图像。在该 调用方式下,数据矩阵中的最小对应于颜色映象表中的第一个颜色,数据矩阵中的最大 对应于颜色映象表中的最后一个颜色。 5.3 RGB 图像及其显示 (1) image(RGB) 不管RGB图像的类型是double浮点型,还是 uint8 或 uint16 无符号整数型,Matlab都 能通过 image 函数将其正确显示出来。 RGB8 = uint8(round(RGB64×255)); % 将 double 浮点型转换为 uint8 无符号整型 RGB64 = double(RGB8)/255; % 将 uint8 无符号整型转换为 double 浮点型 RGB16 = uint16(round(RGB64×65535)); % 将 double 浮点型转换为 uint16 无符号整型 RGB64 = double(RGB16)/65535; % 将 uint16 无符号整型转换为 double 浮点型 (2) imshow(RGB) 参数是一个 m×n×3 的数组 5.4 二进制图像及其显示 (1) imshow(BW) 在 Matlab 7.0 中,二进制图像是一个逻辑类,仅包括 0 和 1 两个数。像素 0 显示 为黑色,像素 1 显示为白色。 显示时,也可通过NOT(~)命令,对二进制图象进行取反,使数 0 显示为白色;1 显示 为黑色。 例如: imshow(~BW) (2) 此外,还可以使用一个调色板显示一副二进制图像。如果图形是 uint8 数据类型, 则数 0 显示为调色板的第一个颜色,数 1 显示为第二个颜色。 例如: imshow(BW,[1 0 0;0 0 1]) 5.5 直接从磁盘显示图像 可使用一下命令直接进行图像文件的显示: imshow filename 其中,filename 为要显示的图像文件的文件名。 如果图像是多帧的,那么 imshow 将仅显示第一帧。但需注意,在使用这种方式时,图像 数据没有保存在Matlab 7.0 工作平台。如果希望将图像装入工作台中,需使用 getimage 函 数,从当前的句柄图形图像对象中获取图像数据, 命令形式为: rgb = getimage; bwlabel 功能: 标注二进制图像中已连接的部分。 L = bwlabel(BW,n) [L,num] = bwlabel(BW,n) isbw 功能: 判断是否为二进制图像。 语法: flag = isbw(A) 相关命令: isind, isgray, isrgb 74.isgray 功能: 判断是否为灰度图像。 语法: flag = isgray(A) 相关命令: isbw, isind, isrgb 11.bwselect 功能: 在二进制图像中选择对象。 语法: BW2 = bwselect(BW1,c,r,n) BW2 = bwselect(BW1,n) [BW2,idx] = bwselect(...) 举例 BW1 = imread('text.tif'); c = [16 90 144]; r = [85 197 247]; BW2 = bwselect(BW1,c,r,4); imshow(BW1) figure, imshow(BW2) 47.im2bw 功能: 转换图像为二进制图像。 语法: BW = im2bw(I,level) BW = im2bw(X,map,level) BW = im2bw(RGB,level) 举例 load trees BW = im2bw(X,map,0.4); imshow(X,map)

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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