ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:19.42KB ,
资源ID:25221283      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25221283.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(xlib库基本图形编程技术文档新手入门linux时代开源自由共享.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

xlib库基本图形编程技术文档新手入门linux时代开源自由共享.docx

1、xlib库基本图形编程技术文档新手入门linux时代开源自由共享xlib库基本图形编程技术文档新手入门linux时代开源、自由、共享. Xlib库基本图形编程Basic Graphics Programming With The Xlib Libraryhttp:/users.actcom.co.il/choo/lupg/tutorials/xlib-programming/xlib-programming.html 1. Preface 2. The Client And Server Model Of The X Window System 3. GUI programming - the

2、 Asynchronous Programming Model 4. Basic Xlib Notions 1. The X Display 2. The GC - Graphics Context 3. Object Handles 4. Memory Allocation For Xlib Structures 5. Events 5. Compiling Xlib-Based Programs 6. Opening And Closing The Connection To An X Server 7. Checking Basic Information About A Display

3、 8. Creating A Basic Window - Our hello world Program 9. Drawing In A Window 1. Allocating A Graphics Context (GC) 2. Drawing Primitives - Point, Line, Box, Circle. 10. X Events 1. Registering For Event Types Using Event Masks 2. Receiving Events - Writing The Events Loop 3. Expose Events 4. Getting

4、 User Input 1. Mouse Button Click And Release Events 2. Mouse Movement Events 3. Mouse Pointer Enter And Leave Events 4. The Keyboard Focus 5. Keyboard Press And Release Events 5. X Events - A Complete Example 11. Handling Text And Fonts 1. The Font Structure 2. Loading A Font 3. Assigning A Font To

5、 A Graphics Context 4. Drawing Text In A Window 12. Windows Hierarchy 1. Root, Parent And Child Windows 2. Events Propagation 13. Interacting With The Window Manager 1. Window Properties 2. Setting The Window Name And Icon Name 3. Setting Preferred Window Size(s) 4. Setting Miscellaneous Window Mana

6、ger Hints 5. Setting An Applications Icon 14. Simple Window Operations 1. Mapping And UN-Mapping A Window 2. Moving A Window Around The Screen 3. Resizing A Window 4. Changing Windows Stacking Order - Raise And Lower 5. Iconifying And De-Iconifying A Window 6. Getting Info About A Window 15. Using C

7、olors To Paint The Rainbow 1. Color Maps 2. Allocating And Freeing Color Maps 3. Allocating And Freeing A Color Entry 4. Drawing With A Color 16. X Bitmaps And Pixmaps 1. What Is An X Bitmap? An X Pixmap? 2. Loading A Bitmap From A File 3. Drawing A Bitmap In A Window 4. Creating A Pixmap 5. Drawing

8、 A Pixmap In A Window 6. Freeing A Pixmap 17. Messing With The Mouse Cursor 1. Creating And Destroying A Mouse Cursor 2. Setting A Windows Mouse Cursor -PrefaceThis tutorial is the first in a series of would-be tutorials about graphical programming in the X window environment. By itself, it is usele

9、ss. A real X programmer usually uses a much higher level of abstraction, such as using Motif (or its free version, lesstiff), GTK, QT and similar libraries. However, we need to start somewhere. More than this, knowing how things work down below is never a bad idea.After reading this tutorial, one wo

10、uld be able to write very simple graphical programs, but not programs with a descent user interface. For such programs, one of the previously mentioned libraries would be used. -X窗口系统的客户/服务器模式当初开发X窗口系统的主要目的只有一个,那就是灵活性。这个灵活性的意思就是说一件东西虽然看起来是在这工作,但却实际上是工作在很远的地方。因此,较低等级的实现部分就必须提供绘制窗口,处理用户输入,画画,使用颜色等工作的工

11、具。在这个要求下,决定了系统被分成了两部分,客户端和服务器端。客户端决定做什么,服务器端执行真正的绘图和接受用户的输入并把它发给客户端。这种模式与我们一般习惯的客户端和服务器端的概念是正好相反的。在我们的情况下,用户就坐在服务器端控制的机器前,而客户端这时却是运行在远程主机上。服务器端控制着显示屏,鼠标和键盘。一个客户端也许正连接着服务器端,要求给它画一个窗口(或者是一堆),并要求服务器端把用户对它的窗口的输入传给它。结果,好几个客户端可能连接到了一个服务器端上-有的在运行一个电子邮件软件,有的在运行一个网页浏览器等。当用户输入了指令给窗口,服务器端就会把指令打包成事件传给控制那个窗口的客户端

12、,客户端根据接受到的事件决定干什么然后发送请求让服务器端去画什么。以上介绍的会话都是通过X消息协议传输的。该协议是实现在TCP/IP协议上的,它允许在一个网络里的客户端访问这个网络里的任何服务器端。最后,X服务器端可以和客户端运行在同一台机器上以获得性能优化(注意,一个X协议事件可能会达到上百KB),例如使用共享内存,或者使用Unix域socket(在一个Unix系统的两个进程间创建一个本地通道进行通信的方法)。-图形用户接口(GUI)编程-异步编程模式不像我们通常的令人愉快的程序,一个GUI程序通常使用异步编程模式,也就是下面要介绍的事件驱动编程。这个事件驱动编程的意思是说程序通常都处于空闲

13、状态,等待从X服务器发来的事件,等收到了事件,才根据事件做相应的事情。一个事件可能是用户在屏幕某处x,y点击了鼠标左键,或者是你控制的窗口需要被重画。因为程序要回应用户的请求,同时还需要刷新自己的请求队列,因此需要程序尽可能使用较短的事件来处理一个事件(例如,作为一条公认的准则,不能超过200毫秒)。这也暗示着当然存在需要程序处理很长时间才能完成的事件(例如一个到远程服务器的网络连接,或者是连接一个数据库,或者是不幸的要处理一个超大文件的复制工作)。这都要求程序使用异步方式来处理而不是通常的同步方式。这时候就应该采用各种各样的异步编程方法来进行这些耗时的工作了,或者干脆把它们交给一个线程或进程

14、来进行。根据以上的说明,一个GUI程序就应该像以下的方式来工作:进行初始化工作连接X服务器进行与X相关的初始化工作进行循环从X服务器那里接受下一个事件根据收到的事件发送各种绘图指令给X服务器如果事件是个退出事件,结束循环关闭与X服务器的连接进行资源释放工作-Xlib的基本思想X协议是非常复杂的,为了大家不用再辛辛苦苦把时间浪费在实现它上面,就有了一个叫Xlib的库。这个库提供了访问任何X服务器的非常底层的手段。因为X协议已经被标准化了,理论上客户程序使用任何Xlib的实现都可以访问任何X服务器。在今天,这看起来可能很琐碎,但如果回到那个使用字符终端和专有绘图方法的时代,这应该是一个很大的突破吧

15、。实际上,你很快发现围绕瘦客户机,窗口终端服务器等领域会有许多多么令人兴奋的事情。-X显示使用XLib的基本思想就是X显示。它代表了一个打开的到X服务器的连接的结构。它隐藏了一个保存有从X服务器来的事件的队列,和一个保存客户程序准备发往服务器的请求队列。在Xlib里,这个结构被命名为显示Display。当我们打开了一个到X服务器的连接,库就会返回一个指向这个结构的指针。然后,我们就可以使用这个指针来使用Xlib里各种各样的函数。-GC - 图形上下文当我们进行各种绘图操作(图形,文本等)的时候,我们也许会使用许多参数来指定如何绘制,前景,背景,使用什么颜色,使用什么字体等等,等等。为了避免为每

16、个绘图函数设置数量惊人的参数,我们使用一个叫GC的图形上下文结构。我们在这个结构里设置各种绘图参数,然后传给绘图函数就行了。这应当是一个非常方便的方法吧,尤其当我们在进行一连串操作中使用相同的参数时。-对象句柄当X服务器为我们创建了各种各样的对象的时候 - 例如窗口,绘图区和光标 - 相应的函数就会返回一个句柄。这是一个存在在X服务器空间中的对象的一个标识-而不是在我们的应用程序的空间里。在后面我们就可以使用Xlib的函数通过句柄来操纵这些对象。X服务器维护了一个实际对象到句柄的映射表。Xlib提供了各种类型来定义这些对象。虽然这些类型实际上只是简单的整数,但我们应该继续使用这些类型的名字 -

17、 理由是为了可移植。-Xlib结构的内存分配Xlib的接口使用了各种类型的结构。有些可以由用户直接来分配内存,有些则只能使用专门的Xlib库函数来分配。在使用库来分配的情况,库会生成有适当初始参数的结构。这对大家来说是非常方便的,指定初始值对于不太熟练的程序员来说是非常头疼的。记住-Xlib想要提供非常灵活的功能,这也就意味着它也会变得非常复杂。提供初始值设置的功能将会帮助那些刚开始使用X的程序员们,同时不会干扰那些高高手们。在释放内存时,我们使用与申请的同样方法来释放(例如,使用free()来释放malloc()申请的内存)。所以,我们必须使用XFree()来释放内存。事件一个叫XEvent

18、的结构来保存从X服务器那里接受到的事件。Xlib提供了非常大量的事件类型。XEvent包括事件的类型,以及与事件相关的数据(例如在屏幕什么地方生成的事件,鼠标键的事件等等),因此,要根据事件类型来读取相应的事件里的数据。这时,XEvent结构使用c语言里的联合来保存可能的数据(如果你搞不清楚c的联合是怎么回事,那你就得花点时间再读读你的教科书了)。结果,我们就可能受到XExpose事件,一个XButton事件,一个XMotion事件等等。-编译基于Xlib的程序编译基于Xlib的程序需要与Xlib库连接。可以使用下面的命令行:cc prog.c -o prog -lX11如果编译器报告找不到X

19、11库,可以试着加上-L标志,像这样:cc prog.c -o prog -L/usr/X11/lib -lX11或者这样(针对使用X11的版本6)cc prog.c -o prog -L/usr/X11R6/lib -lX11在SunOs 4 系统上,X的库被放到了 /usr/openwin/libcc prog.c -o prog -L/usr/openwin/lib -lX11等等,具体情况具体分析-打开,关闭到一个X服务器的连接一个X程序首先要打开到X服务器的连接。我们需要指定运行X服务器的主机的地址,以及显示器编号。X窗口允许一台机器开多个显示。然而,通常只有一个编号为0的显示。如果我们想要连接本地的显示(例如进行显示的机器同时又是客户程序运行的机器),我们可以直接使用:0来连接。现在我们举例,连接一台地址是simey的机器的显示,我们可以使用地址simey:0,下面演示如何进行连接#include /* defines common Xlib functions and structs. */./* this variable will contain the pointer to the Display structure */* returned when opening a connection. */D

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1