窗口管理器如何从像素图渲染边框?

问题描述

任何人都可以解释什么是内在手段以及如何从像素图渲染窗口边框?谢谢。

源代码链接:https://github.com/wmutils/opt/blob/master/chwb2.c#L72

    xcb_rectangle_t inner[] = {
        /* you're not supposed to understand this. */
        {     w,b-o,h+b-   o      },{     w+b   +o,b  -o,h+         b  -  o},{     0,h,w+b  -o,b-   o      },h   +b+      o,w+     b-         o,b -o},{     w+b+o,b        +h    +o,b,b}
    };

    xcb_rectangle_t outer[] = {
        {w + b - o,o,h + b * 2},{w + b,{0,h + b - o,w + b * 2,o},h + b,{1,1,1}
    };

    xcb_pixmap_t pmap = xcb_generate_id(conn);
    xcb_create_pixmap(conn,geom->depth,pmap,win,geom->width  + (b*2),geom->height + (b*2));
    xcb_gcontext_t gc = xcb_generate_id(conn);
    xcb_create_gc(conn,gc,NULL);

    values[0] = oc;
    xcb_change_gc(conn,XCB_GC_FOREGROUND,values);
    xcb_poly_fill_rectangle(conn,5,outer);

    values[0] = ic;
    xcb_change_gc(conn,inner);

    values[0] = pmap;
    xcb_change_window_attributes(conn,XCB_CW_BORDER_PIXMAP,values);

解决方法

好吧,这段代码创建了一个像素图,然后绘制到它上面。首先,它用颜色 outer 填充名为 oc 的五个矩形,然后用颜色 inner 填充另外五个名为 ic 的矩形。

要理解每个矩形的含义,我想有一个结果的屏幕截图会有所帮助。然后你可以看到各种距离是什么,也许这足以弄清楚各种矩形的含义。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...