現在C#を利用してゲームのマップエディターを作成しています。
初心者なので勉強しつつと言った感じで、まだわからないことだらけです。
[1] 質問文
[1.1] 自分が今行いたい事は何か
pictureBoxの画像を任意のタイミングで切り替えたい
[1.2] どのように取り組んだか(プログラムコードがある場合記載)
actChipという構造体型の変数に入っている、Bitmap型の画像をピクチャーボックスに表示させています。
//一番最初の描画はツリービューのノードをクリックしたとき
//----------------------------
// ツリービューのノードをクリックしたら画像を描画
private void TreeNodeClick(Object sender, TreeNodeMouseClickEventArgs e)
{
//最上位ノード以外をクリックした場合
if (e.Node != topTreeNode)
{
//指定したマップをアクティブにする
mapData.SetActMap(e.Node.Text);//ノード名=マップ名。
//ピクチャーボックスの画像を選択されたマップの画像に切り替え
ChangeMapChipBox();
}
}
//チップセット画像の変更関数
private void ChangeMapChipBox()
{
//選択されているマップのタイルイメージを取得
if (mapData != null)
{
//ピクチャーボックスのグラフィクスを取得
Graphics g = chipBox.CreateGraphics();
//ピクチャーボックスに描画
g.DrawImage(mapData.ActChip.tileImage, 0, 0);
g.Dispose();
}
}
//----------------------------
// ピクチャーボックスの再描画
private void PictBoxRepaint(Object sender, PaintEventArgs e)
{
if (sender == chipBox)
{
//chipBox(pictureBox)にチップセット画像を描画
try
{
ChangeMapChipBox();
}
catch
{
MessageBox.Show("error");
}
finally
{
}
}
}
該当ピクチャーボックスをスクロールした際は、期待通りの結果(画像が消えない)がでるんですが、フォームを最小化したり
タブを切り替えた後、ピクチャーボックスを再表示すると画像が表示されない。(一瞬表示されてすぐ消える)
[1.4] 今何がわからないのか、知りたいのか
何が間違ってるのかがわからないです。再描画時に処理を行うようにしていますが、
スクロール時の再描画は問題ないのに、タブ変更やフォームの最小化を行ったときに
このような症状がでるのはなぜでしょうか。
画像左:タブ切り替え前
画像右:infoタブに切り替えた後、mapタブに戻ってきた状況
[2] 環境
[2.1] OS : Windows7
[2.2] コンパイラ名 : VisualStudioExpress2012 for windows Desktop
[3] その他
・どの程度C言語を理解しているか
入門書を一回読んだ程度の初心者です
・ライブラリを使っている場合は何を使っているか
標準で備わってるもののみ。
お手数おかけしますが、何卒よろしくお願いします。