2017-10-15 10 views
0

私は学校プロジェクト用の小さなWindowsForm Dice Gameを作成中です。仕様の1つは、位置とそのスペースのあるスペースのテキストファイルを読み込むことです。私は、この情報を含むテキストファイルをギザギザの配列に読み込んだので、今は障害物として動作するようにPictureBoxを生成する必要があります。コードが正常にコンパイルされ、すべてが動作しているようだが、PictureBoxesが私のフォームに表示されません。 xとyの値は正確でフォームの中にあります。 ifステートメントは、障害物がプレーヤーを前方または後方に送り、それに応じて画像を変更しているかどうかをチェックしています。ランタイム中にピクチャボックスを追加する

int obstacleX = Convert.ToInt32(lbl.Location.X) - 14; 
int obstacleY = Convert.ToInt32(lbl.Location.Y) + 6; 
PictureBox obstacle = new PictureBox(); 
if (Library.GlobalVariables.obstacleStats[i][1] < 0) 
{ 
    obstacle.Image = Properties.Resources.badObstacle; 
} 
else 
{ 
    obstacle.Image = Properties.Resources.goodObstacle; 
} 
obstacle.Location = new Point(obstacleX, obstacleY); 
obstacle.Size = new Size(17, 17); 
obstacle.Show(); 
this.Controls.Add(obstacle); 

明白な欠点はありますか?あなたの助けのための

おかげで、

ジョシュ

+0

あなたは新しいオブジェクトを表示するには、画面を再描画する必要があります

はここで興味のある人のための最終的なコードです。 – nocturns2

+0

どのように画面を再描画しますか? this.Refresh()は何の効果もないようです。 –

+0

pboxが別のコントロールによってオーバーラップしている場合は、obstacle.BringToFront()を追加します。 –

答えて

0

絵が完全にちょうど試してみるためにSizeModeを設定し、表示されない場合があります

obstacle.SizeMode = PictureBoxSizeMode.Zoom 
0

obstacle.SizeMode = PictureBoxSizeMode.Zoomを追加するには、問題を解決しました。助けのための

int obstacleX = Convert.ToInt32(lbl.Location.X) - 14; 
int obstacleY = Convert.ToInt32(lbl.Location.Y) + 6; 
PictureBox obstacle = new PictureBox(); 
if (Library.GlobalVariables.obstacleStats[i][1] < 0) 
{ 
    obstacle.Image = Properties.Resources.badObstacle; 
} 
else 
{ 
    obstacle.Image = Properties.Resources.goodObstacle; 
} 
obstacle.Location = new Point(obstacleX, obstacleY); 
obstacle.Size = new Size(17, 17); 
obstacle.SizeMode = PictureBoxSizeMode.Zoom; 
this.Controls.Add(obstacle); 
obstacle.Show(); 
obstacle.BringToFront(); 

おかげで、

ジョシュ

関連する問題