二十讲SRGP图形包使用实例ppt课件.ppt

上传人:本田雅阁 文档编号:3182155 上传时间:2019-07-22 格式:PPT 页数:20 大小:227.55KB
返回 下载 相关 举报
二十讲SRGP图形包使用实例ppt课件.ppt_第1页
第1页 / 共20页
二十讲SRGP图形包使用实例ppt课件.ppt_第2页
第2页 / 共20页
二十讲SRGP图形包使用实例ppt课件.ppt_第3页
第3页 / 共20页
二十讲SRGP图形包使用实例ppt课件.ppt_第4页
第4页 / 共20页
二十讲SRGP图形包使用实例ppt课件.ppt_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《二十讲SRGP图形包使用实例ppt课件.ppt》由会员分享,可在线阅读,更多相关《二十讲SRGP图形包使用实例ppt课件.ppt(20页珍藏版)》请在三一文库上搜索。

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_setLineStyle SRGP_setLineWidth 文本 SRGP_text(point pt, char *text); 颜色、字体 SRGP_setColor(int value

2、); SRGP_loadColorTable(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有错,SRGP简介基本绘图函数,颜色的处理 #define BLACK 0 #define WHITE 1 #define RED 2 #define GREEN 3 #define BLUE 4 #define YEL

3、LOW 5 const int MaxColor = 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

4、_loadColorTable(0, MaxColor, 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(,采样模式,设置设备模式 SRGP_setInputMode(KEYBOARD, EVENT);

5、 主事件循环 do SRGP_waitEvent(-1); /阻塞,直至某事件发生。 SRGP_getKeyboard(,事件模式,SRGP简介基本交互处理,SRGP简介基本交互处理,/Srgppublic.h typedef enum UP, DOWN buttonStatus; typedef struct point postion; buttonStatus button_chord3; int button_of_last_transition; locator_measure;,SRGP_sampleLocator( /鼠标信息采样 1. if ( Mouse.buttonChor

6、d0=DOWN ) /左键按下 2. if ( Mouse.buttonChord0=UP ) /左键弹起 3. if ( Mouse.buttonChord1=DOWN ) /右键按下,鼠标状态,SRGP简介应用说明,void UserMain() SRGP_begin(“COOL Drawing V1.0“, width, height, 4, FALSE); SRGP_setInputMode(LOCATOR, SAMPLE); do /主处理循环 SRGP_sampleLocator( ,SRGP简介与Windows SDK结合使用,1. 取得设备的DC HDC hdc = GetDC

7、(srgp_canvasTable0.drawable.win); 2. 使用SDK完成SRGP不提供的绘图操作 3. 释放设备DC ReleaseDC(srgp_canvasTable0.drawable.win, hdc); 参见srgplocal.h 常用的一些API (参考VC帮助) COLORREF SetPixel( HDC hdc, int X, int Y, COLORREF crColor); COLORREF GetPixel( HDC hdc, int XPos, int nYPos);,COOL Drawing的界面,COOL Drawing的界面,COOL Drawi

8、ng的界面设计模拟了IE 4风格。 图标和菜单按钮处于平面状态或凹陷状态(标志此时处于某种模式中); 当鼠标指针进入该区域时,产生浮起效果; 移出该区域后,图标恢复原来状态。鼠标在该区域内单击,使图标凹陷或恢复原平面状态,并触发对应事件; 菜单与工具条有延时的徐徐弹出,富有动感。,COOL Drawing的处理流程,COOL Drawing对鼠标的反应,程序采用采样模式。原因:程序需要捕捉鼠标移动事件,而该事件被SRGP屏蔽。 各个对象均有各自的监听函数,在主处理循环中轮流监听。同样,在对象的监听函数中由各个子对象轮流监听。 一旦鼠标进入某对象的区域,则触发对应事件,进入处理状态。,COOL

9、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*

10、 item; 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;,1. MenuBar的初始状态,各个MenuButton对象都在监听鼠标信息。 2. 鼠标移动到某MenuButton上方,该对象监听到该事件,给出反馈使按钮浮起,然后进入处理状态,不断采集鼠标信息,直至鼠标移出本Button范围。

11、 3. 在MenuButton的处理状态中,不断采集鼠标信息,在鼠标左键按下时做出反应使MenuButton凹陷并弹出菜单Menu(弹出菜单时需要保存菜单的背景以便恢复)。这时,由MenuButton以及被激活的Menu (以及其中的MenuItem子对象)开始进入处理状态,监听鼠标信息。,MenuBar 的事件处理,在MenuButton与被激活的Menu (以及其中的MenuItem子对象)的处理状态中,将有三种情况产生: 1.鼠标在MenuButton上单击,弹出的Menu收回(恢复保存的背景),并使凹陷的Button恢复浮起。 2 鼠标移动至某MenuItem上方,该对象监听到该事件,

12、给出反馈使文字以反色显示。 3 鼠标移动出本MenuButton以及Menu的范围,这两个对象退出处理状态,MenuButton恢复初始状态并收回弹出的Menu。其他MenuButton采集到鼠标信息进入的信息,按钮凹陷并弹出菜单,这两个对象进入处理状态。,MenuBar 的事件处理,IconBar 工具条简介,特点: 1. Icon代表着一种绘图工具、绘图模式或绘图颜色。某Icon选中后,将使用这种风格绘图。 2. 一个IconGroup内只能有一个Icon处于选中状态。 3. 鼠标在Icon上停留一定时间后,将弹出提示Hint。 4. 鼠标移出IconBar一段时间后,IconBar将自动

13、隐藏(在窗口左部缩成一个小条) 。鼠标移到隐藏的IconBar上方一段时间后,IconBar又将自动弹出。,IconBar 工具条简介,打开的IconBar,隐藏的IconBar,不足之处,1. 只采用缺省字体,界面不够丰富。 2. 文字长度的计算有误。 可使用SRGP_inquireTextExtent函数,该API的实现有错,请在Font.c中改正。 3. 缺乏时间的度量。 4. 只有界面,不能绘图。在Canvas的处理函数中加入绘图操作;MenuBar的处理函数中加入其他操作;IconBar的处理函数中加入对绘图风格的设置;StatusBar的处理函数中加入一些提示信息。 5. SRGP屏蔽了窗口刷新的消息,当窗口被遮盖后,不能恢复。修改SRGP的事件模式处理函数。,感谢支持,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1