GTK中的Gtk主题#(Windows)

时间:2014-10-21 23:13:52

标签: mono gtk gnome cairo gtk#

我正在尝试更改GTK中的主题#(操作系统:Windows,IDE:Xamarin )。但我接下来的问题是:

  1. 我只能找到一个正确渲染的主题,它是“Orta”。一切都很好,除了滞后和冻结。这是我的代码:

    string Resource_File = "Orta\\gtk-2.0\\gtkrc"; Application.Init (); Gtk.Rc.AddDefaultFile (Resource_File); Gtk.Rc.Parse (Resource_File); MainWindow win = new MainWindow (); win.Show (); Application.Run ();

    当我更改Paned或点击按钮的大小时,我会让GUI冻结I already asked about this)。只有在使用此主题时才会出现此问题,其他主题都可以正常工作。我使用搜索并发现了一些意见,关于这是因为使用Cairo来渲染图形(one of them)。

  2. 如果我尝试在我的GTK#应用程序中使用不同的主题,许多GUI元素未正确呈现,但它们在GTK主题选择器中正确呈现。如果主题在GTK主题选择器中正确显示,那么我尝试在我的Gtk#app中使用所选的gtkrc文件(如“Orta”中的示例所示),但几乎总是,大多数小部件都没有正确显示({{3 }})

  3. 所以我有几个问题:

    1. 如何选择工作主题?
    2. 如何为GTK#(Windows)设置主题?
    3. 使用主题的Gtk#开源应用程序是什么?
    4. 在GTK#app中改变GUI风格的其他方法是什么?
    5. 为什么“Orta”主题会冻结?
    6. 所以我需要你的帮助! 谢谢!

1 个答案:

答案 0 :(得分:2)

我知道这是一个老问题,但我最近一直在与主题作斗争。

事实证明,当使用Xamarin运行Gtk#app构建时,会出现主题问题,因为它似乎有些像Windows一样的"主题被强制进入代码。

从Xamarin Studio运行应用程序时,根据.Net框架(Microsoft .NET 4.5,Mono 3.3.0,Mono 4.0.1),行为不同。我对Mono 3.3.0发出警告,告诉我' Xamarin'无法找到引擎。

我最终得到了以下代码:

Application.Init ();
Gtk.Settings.Default.ThemeName = "Theme/gtk-2.0/gtkrc";
Gtk.Rc.Parse ("./Theme/gtk-2.0/gtkrc");

gtkrc是我的主题。没有设置默认主题名称,没有任何正常工作。我没有去定制我的主题,所以我无法判断它是否解决了每个主题问题。