投稿者 るきお  (社会人) 投稿日時 2010/8/22 10:21:27
推測で申し訳ないですが、複数の場所でCreateGraphicsしているので結果が合成されていないのだと思います。

ゲームのような描画処理が必要な場合は、Pic1のPaintイベントで描画してください。
KeyDownイベントやballmoveメソッドから描画を行いたい場合はPic1.Invalidateを呼び出します。
Invalidateを呼び出すとPaintイベントが呼び出されます。

Paintイベント内ではe.Graphicsに対して描画を命令します。
このようにすることで描画が一か所に集約されうまくつじつまがあいます。

なお、さらに一歩進めると描画処理はKeyDownやballmoveからは行わずTimer1_Timerイベント内でのみPic1.Invalidateを呼び出すようにすることをお勧めします。
KeyDownは押されたキーを記憶しておくだけ、ballmoveは新しい座標を計算しておくだけで、
それを描画するのはPic1_Paintイベント、描画を呼び出すのPic.Invalidate)はTimer1_Timerイベントだけという仕組みです。

このような基本的な枠組み(=フレームワーク)はゲーム作りでは最重要です。この枠組み次第では簡単なゲームもやけに難しいプログラムになったりどうしても作れくなったりしますが、枠組みがしっかりしていればある程度複雑なゲームでも驚くほど簡単に作成できることもあります。

具体例はサンプルで公開しているシューティングゲームを参考にしてください。
http://homepage1.nifty.com/rucio/main/DownLoad/Index_dl.htm

追加で質問などあればいつでもどうぞ。
ゲーム作りがんばってください!

…完成したらコンテストに応募してもらえるんですよね…??