2012-04-15 32 views
0

私は、ユーザが円(:P)であり、敵が彼に到着する矩形である2Dゲームを構築しています。しかし、私の問題は、私がインターネット上で見つけた空間の非常に素晴らしい画像を置いたときに、この画像の下に何があっても画面が描画されるということです。すべてがうまくいく、何かが私の中に衝突したときに私の人生が下っていくのをまだ見ることができる - それがすべてこの写真で覆われているという事実を除いて。一言で言えばVB.NETで画像を上に描画する方法

、私の質問は:どのように私はこの上にすべてを描きます - (私はコマンド「背面へ移動」を使用してみました)

EDIT:フォームは、タイマーを通じて、すべてを描画し、ユーザーはキーでキャラクターをコントロールします。これはおそらく助けにはなりませんが、もしそうなら、ここにあります。 申し訳ありませんが、あなたはコードが必要だと思っていませんでした。ここにあります:

mybase.loadプロシージャで: PicBackGround.Dock = DockStyle.Fill PicBackGroundは画像付きの画像ボックスです。塗装手順で

e.Graphics.Clear(Color.Black) 
     e.Graphics.FillEllipse(Brushes.Orange, Player) 

     'Projectiles 
     Dim i As Integer = 0 
     Do 
      If Current_Projectile(i).IsEmpty = False Then e.Graphics.FillRectangle(Brushes.Red, Current_Projectile(i)) 
      i += 1 
     Loop Until i = UBound(Current_Projectile) 

     'Objects 
     i = 0 
     Do 
      If Objects(i).IsEmpty = False Then e.Graphics.FillRectangle(Brushes.Blue, Objects(i)) 
      i += 1 
     Loop Until i = UBound(Objects) 

オーケー:プレーヤーは、右の先頭で宣言矩形でDim Player As New Rectangle(0, 0, 50, 50)。 Playerに来る敵に関するすべてのデータを格納するArrayオブジェクトがあります。Current_Projectilesは、プレイヤーが発生させる矩形(弾丸)に関するデータを格納する配列です。

他にも知りたいことがあれば教えてください。

+0

使用しているコードを投稿してください。イメージを補正するために描画座標をオフセットしていますか? –

+0

コードを追加しました。どう思いますか? – Azerty560

答えて

2

はい、コントロールはフォームに描画するものと重複します。単純な解決策は、フォームのBackgroundImageプロパティを代わりに使用することです。または、自分でイメージを描く。

+0

ちょっと、 背景画像を設定しようとしましたが、うまくいきませんでした。 私は行を削除しました:e.Graphics.Clear(Color.Black)、そして今は正常に動作します。まず、ありがとう。第二に、私は知りたいのですが、この行を削除すると結果が悪くなりますか? – Azerty560

+1

右は、Clear()を使って背景画像全体に黒を描きます。明らかにあなたはそれを望んでいません。それは*より速くなります*。 –

+0

しかし、実際に何をしていますか?現在のフレームをクリアしますか? (私は、グラフィックスをクリアするような明確な手段をとっていたと思ったので、GPUには余分なストレスがかかりますが、毎秒フレームを再描画しているためです) – Azerty560

関連する問題