Monoで小さなアプリケーションを開発しています。私はバックグラウンドにイメージを持ちたいと思っています。そして、ウィンドウサイズが変化しているときは常にイメージを再描画しなければなりません。しかし、ExposeEventまたはConfigureEventのためのメソッドを追加すると、アプリケーションが落ちます。それは何でしょうか?ここで あなたはbgstream
オープンを維持するが、ストリームの巻き戻しをしていない私のコードEventHandlerを追加した後にGTK#アプリケーションがクラッシュする
using System;
using System.IO;
using Gtk;
public partial class AuthWind: Gtk.Window
{
FileStream bgstream;
public AuthWind() : base (Gtk.WindowType.Toplevel)
{
bgstream = File.Open ("noise-texture.png", System.IO.FileMode.Open);
Build();
HBox mainCont = new HBox (false, 0);
ConfigureEvent += DrawBG;
Gdk.Pixbuf bgbuf = new Gdk.Pixbuf(bgstream, this.Allocation.Width, this.Allocation.Height);
Gdk.Pixmap bgmap = null;
Gdk.Pixmap useless = null;
bgbuf.RenderPixmapAndMask (out bgmap, out useless, 0);
Style st = new Style();
st.SetBgPixmap (StateType.Normal, bgmap);
this.Style = st;
}
void DrawBG(object obj, EventArgs e)
{
Gdk.Pixbuf bgbuf = new Gdk.Pixbuf(bgstream, this.Allocation.Width, this.Allocation.Height);
Gdk.Pixmap bgmap = null;
Gdk.Pixmap useless = null;
bgbuf.RenderPixmapAndMask (out bgmap, out useless, 0);
Style st = new Style();
st.SetBgPixmap (StateType.Normal, bgmap);
this.Style = st;
}
protected void OnDeleteEvent (object sender, DeleteEventArgs a)
{
Application.Quit();
a.RetVal = true;
}
}
アプリケーションがコンパイルされて正常に実行されるようになりましたが、ConfigureEventは単にDrawBGメソッドを起動しません。 –