如何解决窗口管理器如何从像素图渲染边框?
任何人都可以解释什么是内在手段以及如何从像素图渲染窗口边框?谢谢。
源代码链接: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 举报,一经查实,本站将立刻删除。