![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
x server
xlib 是 x-client 的 c 语言的 api 封装。
我们可以跟着这些样例来学习上手 linux gui 。
HockerF
这个作者很懒,什么都没留下…
展开
-
X11 入门
这个基础参考是 开源中国的文章 《X11 入门练习》的源码套娃,我将表述转换了下。源码在我放在gitee 项目中 src 目录下 simple_window.c 文件中。引入 xlib 头文件#include<X11/Xlib.h>链接 x server Display * dsp = XOpenDisplay(NULL); if (!dsp) { return 1; }创建窗口 Window win = XCreate原创 2020-08-22 14:23:25 · 1857 阅读 · 0 评论 -
x11 simple-text
讲解了字符串的打印,代码理解参考 deletion_message原创 2020-08-24 00:07:11 · 124 阅读 · 0 评论 -
x11 simple-drawing
simple-drawing 中绘制了各种形状。代码理解参考 color-drawing.原创 2020-08-24 00:06:35 · 201 阅读 · 0 评论 -
x11 screen_capture
对整个屏幕进行截图。创建吗一个和当前屏幕一样大的窗口 int width = DisplayWidth(display,screen_num), height = DisplayHeight(display,screen_num); Window window = XCreateSimpleWindow(display, RootWindow(display, screen_num), 0, 0, width, height, 1, 0, 0);获取窗体截图 XImage *原创 2020-08-24 00:05:55 · 652 阅读 · 2 评论 -
x11 resize
口大小改变消息处理 case ConfigureNotify: if (width != ev.xconfigure.width || height != ev.xconfigure.height) { width = ev.xconfigure.width; height = ev.xconfigure.height; printf("Size changed to: %d by %d\n", width, height); } break;这里 C.原创 2020-08-24 00:05:14 · 184 阅读 · 0 评论 -
x11 prog-1 prog-2
prog-1创建了一个窗口的最简单代码prog-2在窗口中画了一条线段, 步骤也是在 基础篇的 simple_window 有说明,可以参考一下。原创 2020-08-24 00:04:40 · 118 阅读 · 0 评论 -
x11 load_font
该小节代码为加载字体,具体在 deletion_message 中有实现,所以不单独做讲解了。原创 2020-08-24 00:03:24 · 143 阅读 · 0 评论 -
x11 events
这个代码实例代码也是相对来说比较长的。这个代码里面讲了鼠标和键盘事件的处理。注册事件 XSelectInput(display, win, ExposureMask | KeyPressMask | ButtonPressMask | Button1MotionMask | Button2MotionMask | StructureNotifyMask);事件监听 XNextEvent(display, &an_event原创 2020-08-24 00:02:55 · 966 阅读 · 0 评论 -
x11 draw_string
这个例子做字符串的打印,个人认为这个例子最值得讲的是事件处理中键盘事件的运用,我们来看看。在窗口信息初始化完成后,直接在 while循环中对事件进行监控 XNextEvent(display,&event);当事件为 Expose的时候,在 窗口的 (10,10) 坐标用默认配置开始绘制字符串。 XDrawString(display,win,gc,10,10,hello,strlen(hello));Expose (暴露) 事件的触发并不是那么明确,大致就是窗口 暴露 大原创 2020-08-24 00:02:00 · 264 阅读 · 0 评论 -
x11 draw-pixmap
xlib 主要就是图像展示效果,这个时候就可以体现出 pixmap 的作用了。创建 pixmap 类型的 bitmap int rc = XReadBitmapFile(display, win, "icon.bmp", &bitmap_width, &bitmap_height, &bitmap,原创 2020-08-24 00:01:23 · 599 阅读 · 0 评论 -
x11 draw_pixels
对图像每个像素 统一 加一个值创建一个图片 char *data = (char*)malloc(256*256*4); XImage *img = XCreateImage(display,visual,DefaultDepth(display,screen_num),ZPixmap, 0,data,256,256,32,0);调用 XAddPixel 添加值 int count = 256 * 256; for (int i = 0; i < count; ++i)原创 2020-08-24 00:00:24 · 171 阅读 · 0 评论 -
x11 double_win
该样例分析了创建多窗口的流程,本样例创建了两个窗口,供大家参考获得根窗口 Window root = RootWindow(display,screen_num);之前是采用 DefaultRootWindow 函数来获取的,这个函数返回当前默认的主窗体,这个窗体会发生变化,所以如果我们想让我们应用窗体可控,就得选用 RootWindow 函数来得到。创建子窗体 Window win1 = XCreateSimpleWindow(display,root,0,0,500,500,1,0xff原创 2020-08-23 23:59:29 · 166 阅读 · 0 评论 -
x11 display_image
显示图片将图片信息加载到内存中,这里直接在内存中生成图片 int i, j; unsigned char *image32=(unsigned char *)malloc(width*height*4); unsigned char *p=image32; for(i=0; i<width; i++) { for(j=0; j<height; j++) { if((i<256)&&am原创 2020-08-23 23:58:48 · 699 阅读 · 2 评论 -
x11 deletion_message
这是一个在屏幕上打印字符串的例子,但是例子整体结构有些变化,我们采用 while 是循环的方式来判断是否退出,而不是采用定时的方式,有个好处是,在while中重绘,可以在屏幕发生变化时,让我们的内容任然在屏幕上。接下来看看这个循环怎么回事:先给 窗口管理器 说, 我要 WM_DELETE_WINDOW 的事件通知 Atom wm_delete_window; wm_delete_window = XInternAtom (text_box.display, "WM_D原创 2020-08-23 23:58:05 · 315 阅读 · 0 评论 -
x11 cursor
自定义鼠标样式鼠标样式可以分两种,一种是系统内部的,一种是用户自定义的。系统内部样式定义为系统内部的缓冲样式 /* create a 'watch' cursor. */ font_cursor = XCreateFontCursor(display, XC_watch); /* attach this cursor to our window. */ XDefineCursor(display, win, font_cursor); XSync(displ原创 2020-08-23 23:57:09 · 743 阅读 · 0 评论 -
x11 color-drawing
彩色绘画获取屏幕颜色空间 screen_colormap = DefaultColormap(display, DefaultScreen(display));通过颜色名分配颜色结构体 rc = XAllocNamedColor(display, screen_colormap, "red", &red, &red); if (rc == 0) { fprintf(stderr, "XAllocNamedColor - failed to allocated 're原创 2020-08-23 23:56:10 · 370 阅读 · 0 评论 -
x11 all-request
这个程序不能用默认的 gcc 编译,我们可以用g++ all-request.c -o all-request `pkg-config --cflags --libs x11` 看了下源码,有接近八百行,有点长。git clone 的代码有点问题,不能正常运行,插眼,后期来学习。...原创 2020-08-23 23:55:11 · 112 阅读 · 0 评论 -
x11 window-operations
XResizeWindow 实现 窗口的移动 int i; /* start shrinking our window in a loop. */ for (i=0; i<40; i++) { win_width -= 3; win_height -= 3; XResizeWindow(display, win, win_width, win_height); XFlush(display); usleep(20..原创 2020-08-22 15:32:34 · 341 阅读 · 0 评论 -
x11 simple-wm-hints
窗口的标识设置样例。得到 icon 的图片 /* load the given bitmap data and create an X pixmap contianing it. */ icon_pixmap = XCreateBitmapFromData(display, win, icon_bitmap_bits,原创 2020-08-22 14:54:30 · 305 阅读 · 0 评论