Egg安装和使用手册.doc_第1页
Egg安装和使用手册.doc_第2页
Egg安装和使用手册.doc_第3页
Egg安装和使用手册.doc_第4页
Egg安装和使用手册.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录目录 在在 VC6 上编写 运行 调试上编写 运行 调试 C 语言程序语言程序 2 前言前言 2 编辑 编译与运行编辑 编译与运行 2 VCVC 6 6 调试技术调试技术 6 设置断点设置断点 6 调试运行调试运行 7 自定义监视变量自定义监视变量 9 进一步学习进一步学习 11 EGGEGG 安装和使用安装和使用 11 简介简介 11 下装下装 11 安装安装 12 使用使用 E EGGGG编写第一个程序编写第一个程序 12 建立工程建立工程 12 编写代码编写代码 13 运行程序运行程序 15 进一步学习进一步学习 17 EGGEGG 基本绘图基本绘图 17 基本知识基本知识 17 坐标系统坐标系统 17 画笔当前位置画笔当前位置 18 初始化初始化 18 直线直线 19 曲线曲线 19 正圆曲线正圆曲线 19 椭圆曲线椭圆曲线 20 字符串字符串 20 贴图贴图 20 EGGEGG 高级绘图高级绘图 21 画笔颜色和宽度画笔颜色和宽度 21 字体字体 22 填充填充 22 EGGEGG 动画功能动画功能 22 下蛋下蛋 22 画蛋画蛋 22 动蛋动蛋 23 其它其它 25 EGGEGG 交互功能交互功能 26 事件事件 26 按键处理按键处理 26 WaitForEvent WaitForEvent 初探初探 26 按不同键做不同事按不同键做不同事 27 处理同时按下的键处理同时按下的键 28 鼠标移动鼠标移动 28 定时器定时器 29 WaitFor WaitFor 29 StartTimer StartTimer 打开一个 5 厘米见方的 Egg 窗口 DrawLine 5 5 从初始位置 左上角 开始 向 X 轴正方向偏移 5 厘米 Y 轴负方向偏移 5 厘米 画一条直线 WaitForExit 等待用户关闭窗口 如下图所示 运行程序运行程序 编写完代码之后 我们就可以编译 运行这个程序 来看看我们这段代码 所产生的最后的结果 要达到这个目的可以直接点击工具栏上的 按钮来完 成 如下图所示 随后 系统将弹出一个对话框询问你是否需要编译源程序 直接点击 OK 系统会自动的编译并连接 Egg 的代码库 然后运行程序 下图就是运 行结果 进一步学习进一步学习 Egg 提供了很多函数 你可以灵活的使用它们以绘制出更多更绚丽的图画 下面一些资源可能是你在学习使用 Egg 的过程中所需要的 3 3 EggEgg 基本绘图基本绘图 基本知识基本知识 只要了解 Egg 的坐标系统 就可以马上开始图形编程之旅 坐标系统坐标系统 Egg 的坐标系统采用我们最熟悉的平面直角坐标系 左下角是坐标原点 X 坐标 向右递增 Y 坐标向上递增 单位是厘米 如右图 画笔当前位置画笔当前位置 在 Egg 中有一个画笔 尽管我们看不到它 但它确确实实存在 画笔指向的位 置的坐标就是画笔的当前位置 简称画笔位置 所有绘图操作都是从画笔位置 开始落笔绘图 按照绘图要求移动画笔 并把最后提笔结束的位置作为新的画 笔位置 MovePen 可以移动画笔位置到新的绝对坐标 void MovePen double x double y OffsetPen 按相对当前位置的位移移动画笔 void OffsetPen double dx double dy 初始化初始化 只要调用一个函数 EggStart 就完成所有初始化 Egg 平台的工作 参 数更简单到只有两个 绘图窗口的宽和高 单位厘米 void EggStart double fWidth double fHeight 你不需要考虑 Egg 的结束问题 只要程序正常退出 Egg 占用的所有资源都会 被自动释放 直线直线 用 DrawLine 从画笔当前位置 按照参数指定的位移画一条直线 例如下面代 码将以当前位置为左上角 绘制一个边长为 1 厘米的正方形 并连接其对角线 绘制正方形 DrawLine 1 0 DrawLine 0 1 DrawLine 1 0 DrawLine 0 1 绘制对角线 DrawLine 1 1 OffsetPen 0 1 DrawLine 1 1 曲线曲线 正圆曲线正圆曲线 绘制正圆和曲线都使用 DrawArc void DrawArc double r double dStart double dSweep 参数 r 是曲线所在圆的半径 单位厘米 dStart 是曲线开始点在圆周上的角度 dSweep 是曲线沿圆周按逆时针方向扫过的角度 如右图所示 其中粗黑曲线是 下面代码所绘 DrawArc 2 45 90 如 dSweep 使用负数 就是沿圆周按顺时针方向画曲线 例如下面代码会画一个 向上凹的半圆 DrawArc 2 0 180 下面代码绘制一个完整的圆 DrawArc 2 0 360 它和下面代码等价 DrawArc 2 0 360 椭圆曲线椭圆曲线 椭圆和椭圆曲线使用 DrawEllipticalArc 原型如下 void DrawEllipticalArc double rx double ry double dStart double dSweep 参数 dStart 和 dSweep 的含义与 DrawArc 完全相同 rx 是该椭圆在 x 轴的半径 ry 是在 Y 轴的半径 字符串字符串 在 Egg 里输出字符串非常简单 只需要一个简单的函数 DrawString void DrawString char pString 例如 要输出 Hello World 使用如下代码 DrawString Hello World 字符串的左上角位于当前的画笔位置 输出后画笔位置移动到字符串的右上角 贴图贴图 Egg 支持 bmp 文件的贴图 使用下面函数 void DrawBitmap char lpszFilename 参数是 bmp 文件名 例如要贴当前目录下的 beauty bmp 文件 可以使用下 面语句 DrawBitmap beauty bmp 位图的左上角位于画笔当前位置 贴图后 当前位置移动到位图的右上角 4 4 EggEgg 高级绘图高级绘图 利用基本绘图功能 可以绘画复杂的单线条图形 但如果想要图案更加绚丽多 彩 就要使用高级绘图功能 画笔颜色和宽度画笔颜色和宽度 函数 SetPen 改变 画笔的颜色和宽度 从此都用指定的颜色 和宽度绘画各种图形 文字 直到下次调用 相关函数为止 void SetPen unsigned long color double fWidth fWidth 是宽度 单 位厘米 color 是颜 色 有如右表的颜色 可供选择 如果只想单独改变颜 色或宽度 可以调用 SetPenColor 和 SetPenWidth 例如设置画笔为红色 且宽度是 0 1 厘米 使用如下语句 SetPen RED 0 1 名称颜色 BLACK DARK BLUE DARK GREEN DARK CYAN DARK RED DARK MAGENTA DARK YELLOW LIGHT GRAY DARK GRAY BLUE GREEN CYAN RED MAGENTA YELLOW WHITE TRANSPARENT COLOR 透明色 用它绘图可以起到擦除效果 它等价于 SetPenColor RED SetPenWidth 0 1 字体字体 此功能未完成 blush 填充填充 此功能未完成 blush 5 5 EggEgg 动画功能动画功能 Egg 的一大特色是其对 egg 的支持 注意大小写的区别 首字母大写的 Egg 表示 Egg 平台 小写的 egg 是 Egg 独有的一个概念 它是在 Egg 中最小的动画单元 可以单独在每个 egg 上绘画 并随意移动每个 egg 达 到动画效果 下蛋下蛋 有了蛋 才能对其煎炒烹炸 所以我们先学学怎么下蛋 每次调用 LayEgg 都会生成一个新的 egg 并把这个 egg 的句柄返回给你 HEGG LayEgg void 此句柄的用处后面再介绍 egg 的大小与调用 EggStart 时指定的大小一致 并且覆盖整个盘子 盘子是 Egg 图形窗口的昵称 但它初始状态是透明的 理论上可以下无数的蛋 但注意不要下太多的蛋 否则撑破你的内存 每个蛋都是相对独立的 可以绘画 移动任何一个蛋 而不会影响其它的蛋 当两个蛋重合 后下的蛋会覆盖先下的蛋 使用 ChangeEggLayer 可以改变 egg 的层次 调整互相之间的覆盖关系 画蛋画蛋 其实在使用基本绘图功能时 就已经画蛋了 只是因为 Egg 由浅入深的设计 使你感觉不到 egg 的存在 执行完 EggStart 后 便已经偷偷建立了一个 egg 所有的绘图操作 都是在 这个 egg 上进行的 当 LayEgg 后 再执行绘图操作 就是在新的 egg 上绘图 了 每次调用 LayEgg 都是这样的效果 如果想回头在旧 egg 上绘图 怎么办 使 用 SetActiveEgg 函数 void SetActiveEgg HEGG hEgg 把每次 LayEgg 的返回值 egg 的句柄 保存下来 当要控制某个 egg 时 就 把此句柄作为参数给 SetActiveEgg 函数 那么这个 egg 就成为 活动蛋 此后的各种操作都将加诸其上 LayEgg 刚刚下的蛋不需要经过 SetActiveEgg 的过程 会自动成为活动蛋 下面例子下了 5 个蛋 并在每个蛋上画大小不同的一个半圆 include egg h define NUMBER OF EGG 5 int main void HEGG hEggs NUMBER OF EGG int i EggStart 10 5 for i 0 i NUMBER OF EGG i hEggs i LayEgg DrawArc i 1 180 180 WaitForExit return 0 这里没有使用 SetActiveEgg 也看不出下蛋有何好处 但在下面一节 你将 见到 egg 的妙处 动蛋动蛋 最激动人心的动画开始了 目前 Egg 还只支持简单的动画 就是挪动活动 egg 到篮子内的任何位置 通过 MoveEgg 和 OffsetEgg 实现 void MoveEgg double x double y void OffsetEgg double dx double dy 这里的 x y 是 egg 左上角在盘子内的坐标 dx dy 是在盘子坐标系内的位移 需要特别注意注意的是 绘画操作所采用的坐标系是每个 egg 自己的独立坐标 而 不是盘子坐标 也就是说 绘画时 不需要考虑 egg 在盘子内的位置 egg 自 己的左下角永远是坐标原点 下面例子在上面例子的基础上 让半圆动了起来 include egg h define NUMBER OF EGG 5 int main void HEGG hEggs NUMBER OF EGG int i EggStart 10 5 for i 0 i NUMBER OF EGG i hEggs i LayEgg DrawArc i 1 180 180 i 0 while WaitFor 100 SetActiveEgg hEggs i OffsetEgg NUMBER OF EGG i 1 0 1 0 if i NUMBER OF EGG 1 i else i 0 return 0 不过这段程序的动画效果并不好 曲线都是先后动的 并没有一起动 下面代 码利用 Egg 1 02 版以后提供的 SetAutoUpdate 和 Update 使动画看起来更 美观 include egg h define NUMBER OF EGG 5 int main void HEGG hEggs NUMBER OF EGG int i EggStart 10 5 SetAutoUpdate 0 SetAutoUpdate 0 for i 0 i NUMBER OF EGG i hEggs i LayEgg DrawArc i 1 180 180 Update Update i 0 while WaitFor 100 SetActiveEgg hEggs i OffsetEgg NUMBER OF EGG i 1 0 1 0 if i Batch Build 2 选中含有 Release 字样的项 3 点 Rebuild All 4 编译结束后 到项目的 Release 目录下找执行文件 发布之 8 egg 函数原型查询手册函数原型查询手册 基本功能基本功能 下列数据类型和函数实现了 Egg 最基本的功能 通过它们可以建立图形窗口 Egg 平 台称 它为盘子 并能在其上绘制简单的图形和文字 函数函数 void EggStart double fWidth double fHeight 开始使用Egg void ShowConsoleWindow int bShow 显示或隐藏终端窗口 void MovePen double x double y 移动画笔位置 void OffsetPen double dx double dy 位移画笔位置 double GetPenXPos void 得到画笔的X坐标 double GetPenYPos void 得到画笔的Y坐标 void DrawLine double dx double dy 画直线 void DrawString char pString 绘制字符串 double GetStringWidth char pString 得到字符串宽度 void DrawArc double r double dStart double dSweep 画曲线 void DrawEllipticalArc double rx double ry double dStart double dSweep 画椭圆曲线 void DrawBitmap char lpszFilename 帖图 高级图形功能高级图形功能 下列宏和函数实现了 Egg 的高级图形功能 通过它们不仅可以绘制曲线和圆形 而且 可 以改变颜色 线粗 字体和填充色 还可以张贴位图 宏定义宏定义 define BLACK RGB 0 x00 0 x00 0 x00 黑色 define DARK BLUE RGB 0 x00 0 x00 0 x80 深蓝色 define DARK GREEN RGB 0 x00 0 x80 0 x00 深绿色 define DARK CYAN RGB 0 x00 0 x80 0 x80 深青色 define DARK RED RGB 0 x80 0 x00 0 x00 深红色 define DARK MAGENTA RGB 0 x80 0 x00 0 x80 深紫色 define DARK YELLOW RGB 0 x80 0 x80 0 x00 深黄色 define LIGHT GRAY RGB 0 xC0 0 xC0 0 xC0 浅灰色 define DARK GRAY RGB 0 x80 0 x80 0 x80 深灰色 define BLUE RGB 0 x00 0 x00 0 xFF 蓝色 define GREEN RGB 0 x00 0 xFF 0 x00 绿色 define CYAN RGB 0 x00 0 xFF 0 xFF 青色 define RED RGB 0 xFF 0 x00 0 x00 红色 define MAGENTA RGB 0 xFF 0 x00 0 xFF 紫色 define YELLOW RGB 0 xFF 0 xFF 0 x00 黄色 define WHITE RGB 0 xFF 0 xFF 0 xFF 白色 define TRANSPARENT COLOR RGB 0 x00 0 x00 0 xC8 透明色 产生透明效果 函数函数 void SetPen unsigned long color double fWidth 设置画笔颜色和宽度 void SetPenColor unsigned long color 设置画笔颜色 void SetPenWidth double fWidth 设置画笔宽度 交互功能交互功能 下列数据类型和函数实现了 Egg 响应用户输入的功能 通过它们可以得到用户按下了 哪些 键盘和鼠标按键 并能得知鼠标指针的位置 枚举枚举 enum EVENT TYPE EXIT TIMER MOUSEMOVE KEYDOWN KEYUP 事件类型 更多 函数函数 EVENT TYPE WaitForEvent void 等待新事件 void WaitForExit void 等待退出命令 int IsKeyDown unsigned int uVKCode 判断按键是否正在被按下 unsigned int GetStruckKey void 得到被按动的键的虚

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论