【问题标题】:Change Gtk.Button image from embedded resource从嵌入资源更改 Gtk.Button 图像
【发布时间】:2013-10-11 13:36:29
【问题描述】:

我一直在尝试从我在 Xamarin 工作室中构建的 GTK (Mono) 应用程序中的代码中设置按钮的图像,但到目前为止我还没有运气。我似乎无法让任何适用于 C#.Net 的方法在 Mono.Netm 中工作,而且我不知道还能去哪里,因为我已经在网上搜索了我能想到的任何东西,以及唯一的结果我得到的是 C#.Net。

我的问题很简单,我希望我忽略了一些东西,答案也很简单:
通过代码从嵌入式资源中设置 Gtk.Button 图像的方法是什么?

我尝试过的事情:
* 反射
* 资源管理器
* Image.FromStream (Gtk.Image 中不存在)
* 无论我能想到什么......

可能是我做错了什么,但如果是这样,我不知道是什么,所以请帮助我,即使是通过在谷歌上为我指出正确的方向......


编辑:

由于某种原因,@Jester 的解决方案似乎对我不起作用,因为如果您更改按钮的图像,并且在更改它的标签之后,该按钮将只显示标签并删除图像。但这对另一个主题来说是个问题。

【问题讨论】:

  • 为了记录,即使我在设置图像后直接更改标签,它也适用于我。
  • 我认为它与 Xamarin Studio 在可视化编辑器中生成组件的方式有关,但我不确定它是什么。

标签: c# mono gtk xamarin


【解决方案1】:

不确定您是如何错过Image.LoadFromResource 方法或associated constructor :)

那就是你可以简单地做到:

btn.Image = Image.LoadFromResource("name-of-resource");

更新:使用此示例代码对我来说效果很好:

using Gtk;
using System;

public class ButtonApp  
{
        public static int Main (string[] args)
        {
                Application.Init ();
                Window win = new Window ("Button Tester");
                win.SetDefaultSize (200, 150);
                win.DeleteEvent += new DeleteEventHandler (Window_Delete);
                Button btn = new Button ("Click Me");
                btn.Image = Image.LoadFromResource("pic");
                win.Add (btn);
                win.ShowAll ();
                Application.Run ();
                return 0;
        }
        static void Window_Delete (object obj, DeleteEventArgs args)
        {
                Application.Quit ();
                args.RetVal = true;
        }
}

编译使用:mcs -res:foo.png,pic -pkg:gtk-sharp-2.0 ButtonApp.cs

【讨论】:

  • 这让我发现当我使用错误的资源名称时应用程序崩溃,但当我使用正确的资源名称时没有任何反应。你知道怎么回事吗?
猜你喜欢
  • 2011-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-28
  • 2013-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多