我的问题与JavaScript无关,而与C++有关:
在gtkmm3中,应用程序外观由CSS管理,因此可以这样设置转换:
theme.css:
.purple {
transition: 500ms linear;
background-image: -gtk-gradient (radial,
center center, 0,
center center, 1,
from (#FFB2E8),
to (#80005A));
}main.cc:
// Create and define the StyleContext
CssProvider = Gtk::CssProvider::create();
CssProvider->load_from_path (Glib::build_filename (UI_DIR, "theme.css"));
Glib::RefPtr<Gtk::StyleContext> ButtonContext = button->get_style_context ();
ButtonContext->add_provider (CssProvider,
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
// Assign new color
ButtonContext->add_class ("purple");
// Assign an intermediate color
ButtonContext->remove_class ("purple");
ButtonContexy->add_class ("green");
// To something
// ... ...
// Change the color again
ButtonContext->remove_class ("green");
ButtonContext->add_class ("yellow")使用此代码,用户只看到按钮的“黄色”状态,而不是前面的“黄色”状态,因为会跳过转换。如何显示所有的颜色变化一个接一个?
编辑:
我的应用程序是一个游戏,其中按钮是相应的颜色,他们的标签。该标签可以非常接近地更改多次,我希望用户能够看到这些更改,因此,可以看到每个状态之间的转换。所以,它不仅仅是一个闪光灯(我的例子并不完美,如果您想要整个应用程序的代码,您可以得到它这里)。
编辑2:
为了更好地解释我的问题,我修改了上面的代码和下面的句子。
发布于 2017-01-05 04:34:14
你是想简单地让按钮发紫吗?如果是这样的话,您可以使用GLib::SignalTimeout设置一个超时,以获得您希望该按钮闪现的正确时间。
https://stackoverflow.com/questions/41471716
复制相似问题