Linux GUI程序
文章平均质量分 97
mxway
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
十二、Linux实现截屏小工具
本文介绍了如何在Linux操作系统下基于xlib实现一个屏幕截图工具,详细介绍说明了如何创建一个能够覆盖全屏的窗口;获取屏幕桌面像素并保存为BMP图片,在实现过程中我们结合前面文章介绍的XRender扩展功能实现复杂效果的界面。在应对绘制时出现的闪烁现象,详细介绍如何使用集合运算来解决该问题。原创 2025-05-22 16:08:39 · 1239 阅读 · 0 评论 -
十一、xlib绘制编辑框-续
本文介绍了如何进一步完善编辑框功能,包括实现插入光标眨眼、支持键盘左右键移动光标、鼠标选择显示插入光标点、从插入光标处插入和删除文字等功能。具体实现中,通过继承定时器基类 Timeout,创建 EditTimeout 类来处理编辑框的定时器事件,控制光标的显示与隐藏。通过 ShowCaret 函数实现光标的闪烁效果,并在 DoPaint 函数中清除编辑框区域以避免残留光标。最后,通过事件循环和非阻塞接口处理定时器超时事件,确保光标闪烁的流畅性。原创 2025-05-21 15:13:33 · 1396 阅读 · 0 评论 -
十、基于xlib实现定时器
本文介绍了如何在Xlib中实现定时器功能。由于Xlib本身不提供定时器支持,文章通过结合网络异步事件模型和Xlib的文件描述符,使用C++、最小堆和poll机制来实现定时器功能。首先,定义了一个定时器基类Timeout,包含定时器ID、过期时间、执行间隔等属性。接着,使用最小堆来管理定时器事件,确保最早过期的事件优先执行,并详细描述了最小堆的上移(ShiftUp)和下移(ShiftDown)操作。最后,在Xlib事件循环中,通过XPending和poll结合的方式,实现了非阻塞的事件处理与定时器触发。原创 2025-05-21 10:40:02 · 804 阅读 · 0 评论 -
九、异形窗口
文章摘要:本文介绍了如何在Xlib中创建非矩形窗口,特别是如何移除窗口的标题栏并实现窗口的移动功能。通过使用XCreateSimpleWindow创建窗口,并结合XChangeProperty移除窗口装饰,可以创建无标题栏的窗口。为了处理键盘事件,程序监听KeyPress事件,并在按下Esc键时退出。此外,通过XSendEvent发送ClientMessage事件,实现了窗口的拖动功能。文章还详细解释了operateCode参数的含义,用于控制窗口的移动和大小调整。原创 2025-05-19 21:34:43 · 852 阅读 · 0 评论 -
八、实现编辑框控件
在GUI应用程序中,实现编辑框控件需要处理复杂的键盘和鼠标事件。与使用高级UI库(如QT、GTK)不同,使用xlib开发需要手动组合底层接口来实现控件功能。本文介绍了如何在xlib下实现编辑框控件,重点包括接收输入法输入(支持中英文混合输入)、显示输入光标以及响应Backspace键。文章还提到了一些关键函数,如XOpenIM、XSetLocaleModifiers、XCreateIC等,用于处理输入法和文本渲染。此外,文章详细描述了编辑框的绘制过程,并提供了一个结构体UIEdit来存储编辑框的基本信息。原创 2025-05-19 15:56:57 · 1276 阅读 · 0 评论 -
七、xlib窗口渲染
本文介绍了如何在X Window系统中使用XRender扩展渲染带有透明度的PNG图片。由于默认的24位颜色深度窗口无法正确处理PNG的alpha通道,导致图片显示为黑色背景。解决这一问题有两种方法:一是创建支持32位颜色的窗口,二是使用XRender扩展。XRender不仅支持透明度绘制,还能实现图片混合和渐变窗口等复杂效果。文章提供了使用XRender渲染PNG图片的代码示例,包括加载PNG文件、创建Pixmap和Picture对象,并通过XRenderComposite函数将图片绘制到窗口上。原创 2025-05-18 19:50:16 · 1142 阅读 · 0 评论 -
六、绘制图片
本文介绍了如何在Linux系统下使用Xlib接口在窗口中绘制图片,并通过示例代码展示了两种不同的图片绘制方式。第一部分通过手动生成红色块图片,展示了如何分配内存并设置像素颜色,最终将图片绘制到窗口中。第二部分则演示了如何加载24位的BMP图片,并将其转换为适合Xlib显示的格式。通过这个示例,读者可以了解Xlib处理图片的基本原理,为后续更复杂的图像处理打下基础。原创 2025-05-17 21:12:19 · 1134 阅读 · 0 评论 -
五、xlib绘制按钮控件
本文简单介绍了在linux操作系统如何不使用qt、gtk库的情况下,创建GUI程序,并在窗口中绘制按钮控件。xlib没有提供控件这类高级概念,我们可以通过直接在主窗口中绘制,或是子窗口的方式实现按钮控件绘制;直接绘制和子窗口方式绘制本质上没有区别,只是对于事件处理逻辑不同。这种绘制控件的思想与具体操作系统、或界面库无关,只要提供基本绘图元素和鼠标事件处理接口,我们可以在任意操作系统下,使用任意UI绘制控件。通过按钮控件的绘制我们提示了gtk、QT这样的UI库事件循环、高级控件的基本原理。原创 2025-05-17 12:19:53 · 1206 阅读 · 0 评论 -
四、xlib区域
本文介绍了如何在linux操作系统xlib窗口系统中使用Xft库进行文本渲染,并通过设置有效绘制区域来限制文本的显示范围。文章首先提到,在前一篇文章中已经实现了基本图形元素的绘制,但未对文本绘制范围进行限制,导致文本可能覆盖其他控件内容。为了解决这一问题,展示了如何通过创建区域(如矩形和多边形)来约束文本的绘制区域。利用区域(Region)。我们可以在xlib窗口系统创建复杂的控件,实现异形窗口效果。原创 2025-05-16 11:00:00 · 1680 阅读 · 0 评论 -
三、xlib窗口图元
本文介绍了如何在xlib窗口系统中绘制文本和图形元素。本文使用最简洁的代码展示了如何在xlib窗口系统中渲染文本。使用Xft库绘制特效文字。在xlib窗口系统中如何绘制点线、矩形、弧形。以及如何在xlib窗口系统使用颜色对一些特定区域进行填充。原创 2025-05-16 09:45:00 · 809 阅读 · 0 评论 -
二、xlib事件
在Xlib窗口系统中,窗口创建后可以接收鼠标点击、键盘输入、窗口位置和大小改变等操作,这些操作由X Server以事件形式处理。客户端程序通过XPending和XNextEvent等C语言函数查询和处理事件。XPending以非阻塞方式立即返回待处理事件的数量,而XNextEvent会阻塞程序直到有事件发生。示例程序展示了如何使用XSelectInput设置窗口接收的事件类型(如ExposureMask和KeyPressMask),并通过事件循环处理Expose和KeyPress事件。原创 2025-05-15 13:53:25 · 1019 阅读 · 0 评论 -
一. xlib 创建窗口
本文介绍了如何在Linux操作系统下使用xlib创建GUI应用程序,并记录了将duilib移植到Linux下的过程。xlib是X Window System的C语言库,用于创建窗口、绘制图形和管理用户输入。文章详细讲解了如何使用xlib编写一个简单的图形应用程序,包括打开与X服务器的连接、创建窗口、处理事件以及销毁窗口等步骤。此外,还介绍了如何在Ubuntu系统下编译xlib程序,并对比了xlib与GTK、QT等现代界面框架的差异。原创 2025-05-15 10:34:45 · 1370 阅读 · 0 评论
分享