本文记录我从 Avalonia 框架里面学到如何创建一个全屏置顶的 X11 应用窗口的方法 开始之前,先从 Avalonia 或 CPF 里面拷贝足够的代码,这部分代码可以从本文末尾找到下载方法 设置全屏的核心代码是以下三行...(display, window, mask); var gc = XLib.XCreateGC(display, window, 0, 0); XLib.XMapWindow(display, window...); XLib.XDrawLine(display, window, gc, 0, xDisplayHeight, xDisplayWidth, 0); } } XLib.XUnmapWindow...(display, window); XLib.XDestroyWindow(display, window); 本文代码放在 github 和 gitee 上,可以使用如下命令行拉取代码 先创建一个空文件夹...693a137d9349bc65b5e2ed3a7c5d2480775e621a 获取代码之后,进入 CeaherecelallLemlalnohuce 文件夹,即可获取到源代码 更多 Avalonia 以及 X11
本文记录我学习 CPF 框架的笔记,这是我从 CPF 框架里面学习到的 X11 的窗口和消息基础知识。...本文将告诉大家如何创建一个 X11 简单窗口,支持在这个窗口上用鼠标画出简单的内容 开始之前,先感谢小红帽开源的 CPF 框架,详细请参阅 https://gitee.com/csharpui/CPF...本文将大量参考 CPF 里面的代码,关于对 X11 的简单封装调用的代码,我不会在博客里面写出来,只放在我的示例项目代码里,可以在本文末尾找到所有代码的下载方式 以下是创建一个简单的 X11 窗口的例子...创建窗口需要额外创建前景色和背景色,使用如下代码创建白色和黑色 var white = XWhitePixel(Display, screen); var black =...,但创建完成的窗口还没显示出来。
简单理解就是 24 色是不带透明的,而 32 色是带透明的 在 X11 里面,简单的创建窗口的代码大概如下图所示(看不见图片的话,开浏览器的不安全内容兼容,我的图片是 http 的不是 https 的)...此时创建出来的窗口是默认 24 色的 为什么呢?...通过开源的 XLib 的源代码 可以看到 XCreateSimpleWindow 的函数实现代码如下 Window XCreateSimpleWindow( register Display *...其实就是 RootWindow 窗口 在 X11 里面,所有的窗口都是 RootWindow 窗口的子窗口 尝试使用以下代码来获取 RootWindow 的色深 using static CPF.Linux.XLib...那此时无论是 CPF 还是 Avalonia 还是 UNO 都开始顶不住了,如果有这样的需求,那还请到各自的开源仓库提需求 对于旧的 UNO 框架,在创建软渲染的 X11 平台的窗口时,使用的是 XCreateSimpleWindow
本文将通过阅读 lib x11 代码告诉大家,调用 XRootWindow 函数是不耗时的,没有成本的 在我阅读 Avalonia 和 CPF 和 UNO 框架的代码的时候,我发现了很多时候都是在需要用到...RootWindow 存放起来,这样可以稍微提升一点性能 在对某个函数调用进行性能测量考虑时,不仅可以使用基准性能测试工具进行测试,还可以通过阅读代码的方式了解实现原理从而了解其性能 通过阅读 lib x11...答案是可以的 开始之前必须说明的是,这样的方式是不安全的,强依赖 xlib 的实现。...XDefaultRootWindow 都只是从 Display 结构体取出字段而已,可以在业务端随意调用,没有成本 本文以上代码放在 github 和 gitee 上,可以使用如下命令行拉取代码 先创建一个空文件夹...github.com/lindexi/lindexi_gd.git git pull origin 7ad18fcc3b99003e0864e54e1ea6e696909b4b3b 获取代码之后,进入 X11
窗口管理提供了一组工具函数,实现对窗口的创建、关闭、删除等基本操作功能,此外还实现设置、获取窗口属性、移动等控制窗口的功能。...这里要注意的是,对窗口进行创建、关闭、等操作时,要相应修改系统的窗口Z序链表以及各个有关窗口的信息。 4....X window X window是由麻省理工学院推出的窗口系统,1984年发行了其最早版本,简称X,旨在建立不依赖于特定硬件系统的图形和文字显示窗口系统的标准。...X 协议 X Window系统网络协议即X11协议定义了在客户和服务器之间传送信息所使用的数据结构即信息格式定义。它是一个基于流处理通信而不是基于过程或核心调用的异步接口。...X11的实现有许多种,其中用C语言实现的函数库Xlib提供了直接访问协议的原语,提供了信息交换的能力。 X.11.3共有120多个请求,且具有可扩充性,描述了客户与服务器进程通信的结构、语法及语义。
Toast 的 Window 创建过程 Toast也是基于Window实现,可以定时取消,内部采用了Handler。...handleShow将Toast添加到Window中 mWM.addView(mView, mParams); handleHide将Toast从Window中移除 mWM.removeViewImmediate
Activity 的 Window 创建过程 Activity Window创建最终在ActivityThread 中的performLaunchActivity方法中,调用Activity的attach...方法创建。..., true); } } } } 总结: 创建一个DecorView的mDecor对象,用于做为整个应用窗口的根视图; 将view添加到DecorView...的mContentParent中; 依据Feature等style theme创建不同的窗口修饰布局文件,并且通过findViewById获取Activity布局文件该存放的地方(窗口修饰布局文件中id...最后Activity的Window就创建完成了。 void makeVisible() { if (!
Dialog 的 Window 创建过程 首先在Dialog 的构造方法中创建Window实例final Window w = new PhoneWindow(mContext); Dialog(@NonNull...); final Window w = new PhoneWindow(mContext); mWindow = w; w.setCallback(this...mWindow.isDestroyed()) { Log.e(TAG, "Tried to dismissDialog() but the Dialog's window...getWindow.setType(LayoutParams.TYPE_SYSTEM_ERROR); 并加入权限使用系统Window: WINDOW"/>
和 XServer 和 KWin 的代码了解的行为 全部的测试代码如下 using CPF.Linux; using SkiaSharp; using static CPF.Linux.XLib;...{ type = XEventName.Expose, send_event = true, window...width = width, height = height, } }; // [Xlib...我整个代码仓库比较庞大,使用以下命令行可以进行部分拉取,拉取速度比较快 先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文的代码 git init git...github.com/lindexi/lindexi_gd.git git pull origin b54f37030aec86fda474e99c0ad9ae941e23e1da 获取代码之后,进入 X11
本文记录如何在 X11 应用里面,使用 XShapeCombineRegion 方法配置一个 X11 窗口支持和 Win32 窗口一样的命中测试穿透功能,即对应 Win32 的 WS_EX_TRANSPARENT...("libXfixes.so.3")] public static extern void XFixesSetWindowShapeRegion(IntPtr display, IntPtr window...XShapeCombineRegion(IntPtr display, IntPtr dest, int destKind, int xOff, int yOff, IntPtr region, int op); 我尝试创建两个窗口...只是这个 libXfixes.so 也足够旧了,基本上系统都会带的 所有代码放在 github 和 gitee 上,可以使用如下命令行拉取代码 先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹...无法打开共享对象文件: 没有那个文件或目录 /home/uos/Downloads/lin/liblibXext.so.so: 无法打开共享对象文件: 没有那个文件或目录 at CPF.Linux.XLib.XShapeCombineRegion
关于Xlib 获取所有屏幕信息,并没有成功,只是获取到了总的屏幕大小,并没有做更细致的研究。...Display *display = XOpenDisplay(NULL); Window window = DefaultRootWindow(display); int screenCount =...调用X11通用的方法,获取Display,window等信息,然后获取 XRRMonitorInfo 列表。...#include X11/extensions/Xrandr.h> Display *display = XOpenDisplay(NULL); Window window = DefaultRootWindow...一些基础信息资料不做说明,只说明简单使用,通用X11调用方法, #include X11/extensions/Xinerama.h> Display *display = XOpenDisplay
在 学习 CPF 框架笔记 了解 X11 窗口和消息基础知识 的基础上,假定当前已创建完成了窗口,准备好了事件监听 在 X11 执行绘制图片需要在 Expose 曝光之后进行,可在 XSelectInput..., window); XFlush(display); var gc = XCreateGC(display, window, 0, 0); while (XNextEvent(display, out...而不是读取本机的图片文件,因为读取图片文件还有一个解码的过程,解码过程和 X11 没什么关系,为了让本文示例更贴近 X11 的绘制图片,本文这里就选择自己创建图片像素 byte 数组,填充随意的数据假装是图片...,导致 X11 里面存放了错误的指针地址,可能造成段错误等。...desty 则表示画到哪里 如此即可完成绘制图片逻辑 本文使用的 Program.cs 文件代码如下 using System.Runtime.Loader; using static CPF.Linux.XLib
静态库使用方法: 文件---新建---win32 application 创建C应用代码,并添加到头文件 #include #include "Hextoint.h" #pragma...GetLeghtofHEX(char *p); char *modifbit(char *p); int Hexstoinit(char *p); #endif VC2008 做法类似 创建一个静态库
动态库使用方法: 文件---新建---win32 application 创建C应用代码,并添加到头文件 将 .h,.lib,.dll都放到当前目录下 #include #include"Hextoint.h...HEXTOINT_H extern "C"_declspec(dllimport) int Hexstoinit(char *p); #endif VC2008的做法 类似VC6.0 创建一个动态库
} finally { XCloseDisplay(display1); } } }); 以上的 handle 是一个 X11...xSetWindowAttributes); 如果在 Task.Run 后台线程里面,使用的是外面的 display 对象,则发送失败 以上代码放在 github 和 gitee 上,可以使用如下命令行拉取代码 先创建一个空文件夹...pull origin ee9c8da351838b0ec3b8ab577a6c9904e024517d 获取代码之后,进入 DikalehebeekaJaqunicobo 文件夹,即可获取到源代码 更多 X11...using CPF.Linux; using System; using System.Diagnostics; using System.Runtime; using static CPF.Linux.XLib...; 以上代码放在 github 和 gitee 上,可以使用如下命令行拉取代码 先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文的代码 git init
众所周知,在 X11 里面有经典的 Client-Server 模型。...在 LibC 共享内存里面,共享内存的工作依赖 shmget 创建一个共享内存标识和 shmat 通过共享内存标识获取一段内存地址。...的 24 位或 32 位色深窗口 如此即可创建一个颜色深度为 32 位色深的 XImage 指针 如上文所述,使用 shmget 创建一个共享内存标识符,代码如下 var mapLength...type = XEventName.Expose, send_event = true, window...width = width, height = height, } }; // [Xlib
Window服务介绍 Microsoft Windows 服务能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。...本文就向大家介绍如何运用Visual C#来一步一步创建一个文件监视的Windows服务程序,然后介绍如何安装、测试和调试该Windows服务程序。 1.创建window服务 ?...创建完成后发现此应用程序的入口 static void Main() { ServiceBase[] ServicesToRun; ServicesToRun...2.写一个桌面应用程序管理服务 最终我们希望window服务应该在service.msc中存在 ? 编写一个winform就放4个按钮 ?
本文将告诉大家如何在 X11 里面创建一个窗口时,设置窗口的背景颜色 在 dotnet C# 设置 X11 应用窗口背景透明 的基础上,可以通过创建 XColor 结构体,将 XColor 赋值给到 XSetWindowAttributes...的 background_pixel 进行设置窗口的初始化背景颜色 核心实现如下 先创建 XColor 结构体,代码如下 XColor color = new XColor() { red =...这是因为在X11里面支持多个不同的格式的颜色,需要经过这一步骤才能获取具体设备相关的颜色。...所有的代码如下 using static CPF.Linux.XLib; var display = XOpenDisplay(IntPtr.Zero); var screen = XDefaultScreen...github.com/lindexi/lindexi_gd.git git pull origin 2ff0f8d8c502761d58179fa77c3928c7586ae75f 获取代码之后,进入 X11
本文将告诉大家如何在 X11 里面设置窗口透明 不同于在 WPF 里面可以使用 AllowsTransparency 简单方便的设置透明,在 X11 里面设置窗口透明的方法比较绕。...大佬提供此方法,我只是代为记录的工具人 以下是一个简单的示例代码,示例代码里面被我忽略掉一些 P/Invoke 调用封装代码,这些被忽略代码可以从本文末尾找到,可以从本文末尾找到整个示例代码的下载方式 先创建一个空的控制台应用...GLX_X_RENDERABLE, 1, GLX_RENDER_TYPE, GLX_RGBA_BIT, GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT...Program.cs 文件的代码如下 using System.Collections.Immutable; using BlankX11App.X11; using static BlankX11App.X11.XLib...GLX_X_RENDERABLE, 1, GLX_RENDER_TYPE, GLX_RGBA_BIT, GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT
本文记录在使用 X11 过程中的问题,由于不正确使用导致栈空间被回收,从而在调用 XPutShmImage 时让应用闪退,此问题本质上讲只和 X11 的设计有一分钱关系,更多的问题在于我的写法上 在 上一篇博客...上述错误的 Segment id in failed request: 0x0 就能说明问题,即可能在 XPutShmImage 中遇到类似野指针或指针被覆盖等问题 特别感谢 lsj 帮忙阅读和调试 XLib...这里也不能吐槽说 X11 的设计问题,只能说是咱的使用方法不正确。...); XFlush(display); var gc = XCreateGC(display, handle, 0, 0); XFlush(display); 根据以上参数创建...type = XEventName.Expose, send_event = true, window
领取专属 10元无门槛券
手把手带您无忧上云