|
分類:[C#]
2009/03/28(Sat) 13:49:44 編集(投稿者) 2009/03/28(Sat) 13:49:31 編集(投稿者) <pre><pre>2009/03/28(Sat) 03:25:13 編集(投稿者) 2009/03/28(Sat) 03:25:03 編集(投稿者) 2009/03/28(Sat) 03:25:00 編集(投稿者) 2009/03/28(Sat) 03:24:57 編集(投稿者)
ゲームのプログラムを作成しているのですが 別フォームにミニマップを作る際にRefreshを用いて強制的に更新しているのですがゲームの操作時は動作するのですが フォーカスをそちら側に移したり別ウインドウで隠したりすると 描画が停止してしまい実際に追ってみてもPaintイベントが発生しなくなってしまいます どうしたらいいのでしょうか? なお常時砂時計画面なのも原因のひとつなのでしょうか? 開発環境はVS2008Expressです。 //From1側です
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Collections; using System.Threading; using System.Xml; 中略 ThreadStart t3 = new ThreadStart(mapthread); thread3 = new Thread(t3); thread3.IsBackground = true; thread3.Start(); public void mapthread() { if ((map == null) || map.IsDisposed)//mapが開いてない場合Mapを開く { map = new MAP(); map.main = this; map.Show(); } while(true) { main.update();//座標情報の更新 map.Refresh(); Thread.Sleep(50); } } //Form2側です using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;
namespace GAME {
public partial class MAP : Form { public GAME Main; public MAP() { InitializeComponent(); } //ペイントイベントです private void ON_PAINT(object sender, PaintEventArgs e) { Bitmap _bmp = new Bitmap("Map.gif"); Rectangle rec = new Rectangle(0, 0, 256, 256); e.Graphics.DrawImage(_bmp, rec) e.Graphics.FillRectangle(Brushes.Black, main.player_x ,main.player_y , 2, 2); }</pre></pre>
|