如何为Depth=32的窗口设置不透明背景

编程入门 行业动态 更新时间:2024-10-08 22:58:12
本文介绍了如何为Depth=32的窗口设置不透明背景的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

在我的父子关系窗口管理器中,我有一些创建框架窗口的代码:

let screen = &self.conn.setup().roots[self.scrno]; let geom = self.conn.get_geometry(ev.window)?.reply()?; let attr = self.conn.get_window_attributes(ev.window)?.reply()?; let frame_win = self.conn.generate_id()?; let frame_cmap = self.conn.generate_id()?; self.conn.create_colormap( xproto::ColormapAlloc::NONE, frame_cmap, ev.window, attr.visual, )?; self.conn .change_property32( xproto::PropMode::REPLACE, ev.window, self_atoms[ewmh::Net::WMWindowOpacity as usize], xproto::AtomEnum::CARDINAL, &[1], )? .check()?; let win_aux = xproto::CreateWindowAux::new() .event_mask( xproto::EventMask::EXPOSURE | xproto::EventMask::SUBSTRUCTURE_REDIRECT | xproto::EventMask::SUBSTRUCTURE_NOTIFY | xproto::EventMask::BUTTON_PRESS | xproto::EventMask::BUTTON_RELEASE | xproto::EventMask::POINTER_MOTION | xproto::EventMask::ENTER_WINDOW | xproto::EventMask::PROPERTY_CHANGE, ) .background_pixel(self.config.background_pixel) .border_pixel(self.config.border_pixel) .colormap(frame_cmap); self.conn.create_window( geom.depth, frame_win, screen.root, geom.x, geom.y, geom.width, geom.height + self.config.title_height as u16, self.config.border_width as u16, xproto::WindowClass::INPUT_OUTPUT, attr.visual, &win_aux, )?;

我遇到的问题是,当attr.Deep为32时(我尊重它而不是Copy_from_Parent,以便透明工作,请参见Opacity in a reparenting WM),框架窗口最终也是透明的。这不是我想要的。(当然,仅当合成器运行时)

如果back_Pixel是纯色,为什么窗口背景是透明的,以及如何解决此问题?

推荐答案

我不再那么确定我的第一个答案,但我会再试一次。

您写道:

如果back_Pixel是纯色,为什么窗口背景是透明的,以及如何解决此问题?

纯色到底是什么意思?这种纯色从何而来?尝试使用0xffffffff作为此值,并查看这是否会起作用。在任何正常的X11服务器上,它应该是完全不透明的白色(&q;)。

因为您正在查看Awesom的源代码,所以请查看它的color.c。一个Alpha组件被固定在X11的设计上。因此,所有的X11&q;都假装不存在透明度。color.c中有一条关于如何猜测将Alpha组件放置在何处的注释。

我预计大多数X11服务器使用像0xAARRGGBB这样的像素值,因此0x80ff0000将是半透明红色。但这是一个比color.c更糟糕的猜测。

更多推荐

如何为Depth=32的窗口设置不透明背景

本文发布于:2023-11-05 02:52:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1559711.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:何为   不透明   背景   窗口   Depth

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!