二十讲SRGP图形包使用实例课件_第1页
二十讲SRGP图形包使用实例课件_第2页
二十讲SRGP图形包使用实例课件_第3页
二十讲SRGP图形包使用实例课件_第4页
二十讲SRGP图形包使用实例课件_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、第二十讲:SRGP图形包使用实例SRGP简介基本绘图函数点、线、面SRGP_defPoint(int x, int y);SRGP_lineCoord(int x1, int y1, int x2, int y2);SRGP_line(point pt1, point pt2);SRGP_polyLine(int vert_count, point *vertices);绘图属性SRGP_setLineStyleSRGP_setLineWidth文本SRGP_text(point pt, char *text);颜色、字体SRGP_setColor(int value);SRGP_loadCo

2、lorTable(int start, int count, ush *red, ush *green, ush *blue);SRGP_setFont(int value);SRGP_inquireTextExtent(char*text, int *width, int *height, int* descent); /见书P14, 本API有错XY坐标系SRGP简介基本绘图函数颜色的处理#define BLACK 0#define WHITE 1#define RED 2 #define GREEN 3#define BLUE 4#define YELLOW 5const int Max

3、Color = 15; unsigned short red = 0, 255, 255, 0, 0, 255, 255, 0, 192, 114, 240, 130, 225, 10, 255;unsigned short green = 0, 255, 0, 255, 0, 255, 0, 255, 192, 114, 240, 130, 225, 10, 255;unsigned short blue = 0, 255, 0, 0, 255, 0, 255, 255, 192, 114, 240, 130, 225, 140, 230;SRGP_loadColorTable(0, Max

4、Color, red, green, blue); /装载颜色表SRGP_setColor(RED);/设置为红色 RGB(255, 0, 0)SRGP_setColor(YELLOW);/设置为黄色 RGB(255, 255,0)SRGP简介基本交互处理设置设备模式SRGP_setInputMode(LOCATOR, SAMPLE);定位设备的测量locator_measure Mouse;do SRGP_sampleLocator(&Mouse);/采集鼠标信息/判断鼠标的状态,做相应操作 while ( );采样模式SRGP简介基本交互处理/Srgppublic.htypedef enu

5、m UP, DOWN buttonStatus;typedef struct point postion;buttonStatus button_chord3;int button_of_last_transition; locator_measure;SRGP_sampleLocator(&Mouse);/鼠标信息采样1. if ( Mouse.buttonChord0=DOWN ) /左键按下2. if ( Mouse.buttonChord0=UP ) /左键弹起3. if ( Mouse.buttonChord1=DOWN ) /右键按下鼠标状态SRGP简介应用说明void UserM

6、ain() SRGP_begin(COOL Drawing V1.0, width, height, 4, FALSE); SRGP_setInputMode(LOCATOR, SAMPLE); do /主处理循环 SRGP_sampleLocator(&Mouse); /采集鼠标信息,给出反馈 while ( 1 ); SRGP_end();COOL Drawing的界面COOL Drawing的界面COOL Drawing的界面设计模拟了IE 4风格。图标和菜单按钮处于平面状态或凹陷状态(标志此时处于某种模式中);当鼠标指针进入该区域时,产生浮起效果;移出该区域后,图标恢复原来状态。鼠标在

7、该区域内单击,使图标凹陷或恢复原平面状态,并触发对应事件;菜单与工具条有延时的徐徐弹出,富有动感。COOL Drawing的处理流程初始化绘图环境 按参数动态创建菜单条,工具条,画板等对象由菜单条,工具条,画板这三个对象监听鼠标信息某个对象监听到与它有关的鼠标动作,则该对象由监听状态进入处理状态。由该对象内部的各个子对象开始监听。COOL Drawing对鼠标的反应程序采用采样模式。原因:程序需要捕捉鼠标移动事件,而该事件被SRGP屏蔽。各个对象均有各自的监听函数,在主处理循环中轮流监听。同样,在对象的监听函数中由各个子对象轮流监听。一旦鼠标进入某对象的区域,则触发对应事件,进入处理状态。 C

8、OOL Drawing的组成MenuBar 菜单条类IconBar 工具条类StatusBar 状态条类Canvas 画板类 这些对象由参数动态创建虽然SRGP库建立在C语言环境中,但程序的编写采用了面向对象的思想:每个结构都有其对应的方法(函数),函数的传入参数中有结构指针,即每个函数只对其所属的结构进行操作。通过这种方法实现了数据的封装。 MenuBar 菜单条简介typedef struct int x1, y1, x2, y2;char str20; MenuItem;typedef struct int x1, x2, y1, y2;int nItem;MenuItem* item;

9、COLORREF* buf; Menu;typedef struct int x1, x2, y1, y2;point origin;char str20;Menu menu; MenuButton;typedef struct int nMenu;MenuButton* btn;int x1, x2, y1, y2; MenuBar;在MenuButton与被激活的Menu (以及其中的MenuItem子对象)的处理状态中,将有三种情况产生:1.鼠标在MenuButton上单击,弹出的Menu收回(恢复保存的背景),并使凹陷的Button恢复浮起。2 鼠标移动至某MenuItem上方,该对象

10、监听到该事件,给出反馈使文字以反色显示。3 鼠标移动出本MenuButton以及Menu的范围,这两个对象退出处理状态,MenuButton恢复初始状态并收回弹出的Menu。其他MenuButton采集到鼠标信息进入的信息,按钮凹陷并弹出菜单,这两个对象进入处理状态。MenuBar 的事件处理IconBar 工具条简介特点:1. Icon代表着一种绘图工具、绘图模式或绘图颜色。某Icon选中后,将使用这种风格绘图。2. 一个IconGroup内只能有一个Icon处于选中状态。3. 鼠标在Icon上停留一定时间后,将弹出提示Hint。4. 鼠标移出IconBar一段时间后,IconBar将自动隐藏(在窗口左部缩成一个小条) 。鼠标移到隐藏的IconBar上方一段时间后,IconBar又将自动弹出。不足之处1. 只采用缺省字体,界面不够丰富。2. 文字长度的计算有误。 可使用SRGP_inquireTextExtent函数,该API的实现有错,请在Font.c中改

温馨提示

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

评论

0/150

提交评论