《二十讲SRGP图形包使用实例ppt课件.ppt》由会员分享,可在线阅读,更多相关《二十讲SRGP图形包使用实例ppt课件.ppt(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、二十讲SRGP图形包使用实例ppt课件 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望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_setLineSty
2、leSRGP_setLineWidth文本SRGP_text(point pt,char*text);颜色、字体SRGP_setColor(int value);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有错有错lXlYl坐标系坐标系SRGP简介简介基本绘图函数基本绘图函数颜色的处理颜色的处理#
3、define BLACK 0#define WHITE 1#define RED 2#define GREEN 3#define BLUE 4#define YELLOW 5const 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,1
4、14,240,130,225,140,230;SRGP_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(&Mouse);/采集鼠标信息采集
5、鼠标信息/判断鼠标的状态,做相应操作判断鼠标的状态,做相应操作 while();l采样模式l设置设备模式SRGP_setInputMode(KEYBOARD,EVENT);l主事件循环do SRGP_waitEvent(-1);/阻塞,直至某阻塞,直至某事件发生。事件发生。SRGP_getKeyboard(&measure);/判断键盘状态,作相应操作判断键盘状态,作相应操作 while();l l事件模式SRGP简介简介基本交互处理基本交互处理SRGP简介简介基本交互处理基本交互处理/Srgppublic.htypedef enum UP,DOWN buttonStatus;typedef
6、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 UserMain()SRGP_begin(COOL Dra
7、wing V1.0,width,height,4,FALSE);SRGP_setInputMode(LOCATOR,SAMPLE);do /主处理循环主处理循环 SRGP_sampleLocator(&Mouse);/采集鼠标信息,给出反馈采集鼠标信息,给出反馈 while(1);SRGP_end();SRGP简介简介与与Windows SDK结合使用结合使用1.1.取得设备的取得设备的DCDCHDC hdc=GetDC(srgp_canvasTable0.drawable.win);2.2.使用使用SDKSDK完成完成SRGPSRGP不提供的绘图操作不提供的绘图操作3.3.释放设备释放设备D
8、CDCReleaseDC(srgp_canvasTable0.drawable.win,hdc);参见参见srgplocal.hsrgplocal.h常用的一些常用的一些API API(参考参考VCVC帮助)帮助)COLORREF SetPixel(HDC hdc,int X,int Y,COLORREF crColor);COLORREF GetPixel(HDC hdc,int XPos,int nYPos);lYlXlWindows坐标系,与坐标系,与SRGP不同不同COOL Drawing的界面的界面COOL Drawing的界面的界面COOL DrawingCOOL Drawing的
9、界面设计模拟了的界面设计模拟了IE 4风格。风格。图标和菜单按钮处于平面状态或凹陷状态图标和菜单按钮处于平面状态或凹陷状态(标志此时处于某种模式中);(标志此时处于某种模式中);当鼠标指针进入该区域时,产生浮起效果;当鼠标指针进入该区域时,产生浮起效果;移出该区域后,图标恢复原来状态。鼠标移出该区域后,图标恢复原来状态。鼠标在该区域内单击,使图标凹陷或恢复原平在该区域内单击,使图标凹陷或恢复原平面状态,并触发对应事件;面状态,并触发对应事件;菜单与工具条有延时的徐徐弹出,富有动菜单与工具条有延时的徐徐弹出,富有动感。感。COOL Drawing的处理流程的处理流程初始化绘图环境初始化绘图环境
10、按参数动态创建菜单条,按参数动态创建菜单条,工具条,画板等对象工具条,画板等对象由菜单条,工具条,画板由菜单条,工具条,画板这三个对象监听鼠标信息这三个对象监听鼠标信息某个对象监听到与它有关某个对象监听到与它有关的鼠标动作,则该对象由的鼠标动作,则该对象由监听状态进入处理状态。监听状态进入处理状态。由该对象内部的各个子由该对象内部的各个子对象开始监听。对象开始监听。COOL Drawing对鼠标的反应对鼠标的反应程序采用采样模式。原因:程序需要捕捉鼠标移动事件鼠标移动事件,而该事件被SRGP屏蔽。各个对象均有各自的监听函数,在主处理循环中轮流监听。同样,在对象的监听函数中由各个子对象轮流监听。
11、一旦鼠标进入某对象的区域,则触发对应事件,进入处理状态。COOL Drawing的组成的组成MenuBar 菜单条类IconBar 工具条类StatusBar 状态条类Canvas 画板类 这些对象由参数动态创建虽然SRGP库建立在C语言环境中,但程序的编写采用了面向对象的思想:每个结构都有其对应的方法(函数),函数的传入参数中有结构指针,即每个函数只对其所属的结构进行操作。通过这种方法实现了数据的封装。MenuBar 菜单条简介菜单条简介typedef struct int x1,y1,x2,y2;char str20;MenuItem;typedef struct int x1,x2,y1
12、,y2;int nItem;MenuItem*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范围。3
13、.在MenuButton的处理状态中,不断采集鼠标信息,在鼠标左键按下时做出反应使MenuButton凹陷并弹出菜单Menu(弹出菜单时需要保存菜单的背景以便恢复)。这时,由MenuButton以及被激活的Menu(以及其中的MenuItem子对象)开始进入处理状态,监听鼠标信息。MenuBar 的事件处理的事件处理在MenuButton与被激活的Menu(以及其中的MenuItem子对象)的处理状态中,将有三种情况产生:1.鼠标在MenuButton上单击,弹出的Menu收回(恢复保存的背景),并使凹陷的Button恢复浮起。2 鼠标移动至某MenuItem上方,该对象监听到该事件,给出反馈
14、使文字以反色显示。3 鼠标移动出本MenuButton以及Menu的范围,这两个对象退出处理状态,MenuButton恢复初始状态并收回弹出的Menu。其他MenuButton采集到鼠标信息进入的信息,按钮凹陷并弹出菜单,这两个对象进入处理状态。MenuBar 的事件处理的事件处理IconBar 工具条简介工具条简介特点:特点:1.Icon代表着一种绘图工具、绘图模式或绘图颜色。某Icon选中后,将使用这种风格绘图。2.一个IconGroup内只能有一个Icon处于选中状态。3.鼠标在Icon上停留一定时间后,将弹出提示Hint。4.鼠标移出IconBar一段时间后,IconBar将自动隐藏(
15、在窗口左部缩成一个小条)。鼠标移到隐藏的IconBar上方一段时间后,IconBar又将自动弹出。IconBar 工具条简介工具条简介打开的打开的IconBar隐藏的IconBar不足之处不足之处1.只采用缺省字体,界面不够丰富。2.文字长度的计算有误。可使用SRGP_inquireTextExtent函数,该API的实现有错,请在Font.c中改正。3.缺乏时间的度量。4.只有界面,不能绘图。在Canvas的处理函数中加入绘图操作;MenuBar的处理函数中加入其他操作;IconBar的处理函数中加入对绘图风格的设置;StatusBar的处理函数中加入一些提示信息。5.SRGP屏蔽了窗口刷新的消息,当窗口被遮盖后,不能恢复。修改SRGP的事件模式处理函数。