微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

代码链接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 的矩形。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。