我已经在最后一小时努力完成这项工作。 思想es Dock是一个类,它的基础是Gtk :: Window,并且在发出signal_draw()时,给定的上下文应该由CairoMM绘制为透明的......相反,我看到一个黑色的窗口。 这是代码:
Dock::Dock() : Gtk::Window()
{
set_decorated(false);
set_default_size(200,200);
set_app_paintable(true);
signal_draw().connect(sigc::mem_fun(*this,&Dock::dibujar));
}
bool Dock::dibujar(const Cairo::RefPtr<Cairo::Context>& contexto)
{
contexto->set_source_rgba(1.0,1.0,1.0,0.0);
contexto->set_operator(Cairo::OPERATOR_SOURCE);
contexto->paint();
return false;
}
是否足以使窗口透明?
答案 0 :(得分:0)
您的绘制处理程序无法访问有关窗口上应该绘制的其他内容的信息,因此您的paint()
调用会在上面绘制一个透明层,我猜默认情况下是黑色背景
幸运的是,有一种方法可以达到你想要的效果:Gtk::Widget::set_opacity()