


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
画图区控件画图区控件是什么?画图区控件提供了交互式作图的一个画布。作图的基础的Xlib画图。关于Xlib作图,是另一个很大的题目。这里的一些例子,能够解决一些问题,但不是参考手册。画图区控件可以作为一个管理控件拥有子控件,但它没有丰富的输出排版规则。它仅提供一个画布,不能画自己,也不能使用其他Motfi 设计用户接口,一切都要直接在XLib中处理。所以,最直接的应用就是在程序中画图。它支持的子控件一般是用来控制画图的方式。例如显示所需要的信息而隐藏不需要的。ToolKit 做了些什么?ToolKit提供的是系列标准回调资源,例如排列,配置(例如重新定义大小),输入事件(鼠标或键盘)。这样免除了自己创建事件的句柄。不幸的是,这些ToolKit创建的句柄往往对许多复杂的应用并不够,结果就是应用直接安装事件句柄管理用户输入。在这个控件中,是不考虑Motif风格兼容的。当把画图区控件作为管理控件的时候,必须注意转换表和控件布置管理。由于画图区控件允许直接在底层操作,所以重载已经存在的转换,很可能导致子控件无法按Motfi风格行为。一个说法就是:作图区就用于作图,别把它当容器使用。创建一个作图区控件DrawingArea控件原型在中1:Widget drawing_a = XmCreateDrawingArea (parent, name, resource-value-array,resource-value-count);2:Widget drawing_a = XtCreateWidget (“name”, xmDrawingAreaWidgetClass, parent,resource-value-list, NULL);使用回调函数XmNexposeCallback这个回调函数在一个曝光事件中产生调用,应用程序必须重画所有的子控件,如果不重画,子控件将被自动清除。所以,想把它作为一个管理控件是个不好的主意。is generated for the widget. In XmNresizeCallback 这个回调在重新定义窗口大小是产生。产生的事件是 ConfigureNotify 事件XmNinputCallback 这个回调在发生键盘或鼠标事件的时候产生调用。由于作图区控件允许重载所有转换,所以,其使用的灵活性是很大的,所有的事件和行为表现都可以按自己的方式处理,而不必管Motif风格的约束。当然这也使双刃剑,初学者可能不知所措。获得输入句柄.下面的例子将极端简单的划线函数与XmNinputCallback 相联系。其行为方式为按下键作为线的开始,释放作为线的终点。其他事件全部忽略。例子中有一个按钮,用于控制清除窗口内容。Example 11-1. The drawing.c program/* drawing.c 极简单的画图程序,介绍作图区控件的用法。*/#include #include #include main (int argc, char *argv)Widget toplevel, drawing_a, pb;XtAppContext app;XGCValues gcv;GC gc;/*说明一个回调函数,该回调函数是事件句柄的入口*/void drawing_area_callback(Widget, XtPointer, XtPointer);/*创建工程*/XtSetLanguageProc (NULL, NULL, NULL);toplevel = XtVaOpenApplication (&app, Demos, NULL, 0, &argc, argv, NULL, sessionShellWidgetClass, XmNwidth,400, XmNheight, 300, NULL);/*创建作图区控件 */drawing_a = XmCreateDrawingArea (toplevel, drawing_a, NULL, 0);/* add callback for all mouse and keyboard input events */XtAddCallback (drawing_a, XmNinputCallback, drawing_area_callback,NULL);/* Since were going to be drawing, we will be using Xlib routines* and therefore need a graphics context. Create a GC and attach* to the DrawingAreas XmNuserData to avoid having to make global* variable. (Avoiding globals is a good design principle to follow.)*/gcv.foreground = BlackPixelOfScreen (XtScreen (drawing_a);gc = XCreateGC (XtDisplay (drawing_a),/*获取作图区控件的图形控制权*/RootWindowOfScreen (XtScreen (drawing_a),GCForeground, &gcv);XtVaSetValues (drawing_a, XmNuserData, gc, NULL);/* 建立一个清除屏幕的按键,按它同样导致一个XmNinputCallback回调。 */pb = XmCreatePushButtonGadget (drawing_a, Clear,NULL, 0);XtAddCallback (pb, XmNactivateCallback, drawing_area_callback, NULL);XtManageChild (pb);XtManageChild (drawing_a);XtRealizeWidget (toplevel);XtAppMainLoop (app);/* 回调子程序在下面定义。检查Cbs-reason field 以确定是绘图区回调还是按钮回调。*/void drawing_area_callback (Widget widget, XtPointer client_data,XtPointer call_data)static Position x, y;/*将回调数据转换成回调结构*/XmDrawingAreaCallbackStruct *cbs =(XmDrawingAreaCallbackStruct *) call_data;XEvent *event = cbs-event;/*if (cbs-reason = XmCR_INPUT) /* activated by DrawingArea input event - draw lines.* Button Down events anchor the initial point and Button* Up draws from the anchor point to the button-up point.*/if (event-xany.type = ButtonPress) /* anchor initial point (i.e., save its value) */x = event-xbutton.x;y = event-xbutton.y;else if (event-xany.type = ButtonRelease) /* draw full line; get GC and use in XDrawLine() */GC gc;XtVaGetValues (widget, XmNuserData, &gc, NULL);XDrawLine (event-xany.display, cbs-window, gc, x, y,ev
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版小学一年级美术下册教学实践方案计划
- 2025办公文档范本:合同续约申请表
- 第1课 交流会 单词 教学设计-2024-2025学年初中日语人教版第三册
- Unit 2 Know your body(教学设计) -2024-2025学年外研版(三起)(2024)英语三年级下册
- 耐火纤维制品成型工岗位操作技能考核试卷及答案
- 统编版一年级语文暑期复习计划
- 2025年度高端电子设备定向采购合同范本
- 2025版电力系统自动化外包电工安装合同
- 2025版工业用地转让及环保补偿责任协议
- 4.3 基因表达与形状的关系(第2课时)教学设计-2023-2024学年高一下学期生物人教版(2019)必修2
- 人教新课标品德与社会五年级上册《诚信是金2》教学设计【教案】
- 2025浙江省储备粮管理集团有限公司所属企业招聘7人(第一批)笔试参考题库附带答案详解(10套)
- 2024年四川泸州医疗卫生辅助岗位招募笔试真题
- GB/T 45933-2025养老机构康复辅助器具基本配置
- 机加检验员考试试题及答案
- 2025安宁疗护实践指南(试行)知识测试试题及答案
- 弱视的课件教学课件
- 2025年时事政治试题库及答案(共550题)
- 掌上华医基层培训公卫人员考试题目含答案
- 中国城市轨道交通全自动运行系统技术指南
- 2025年河南省中考招生考试数学真题试卷(真题+答案)
评论
0/150
提交评论