2011-01-26 5 views
0

サークルオブジェクトを作成し、それをベロシティで画面に配置し、ボーダー内で跳ね返りたいと思っています。サークルクラスをセットアップすることはできますが、オブジェクトをペイントする方法(後で複数のものをクリックすると、より多くの円オブジェクトが得られます)と動きを表示する方法はありますか?オブジェクトを作成し、移動中にペイントするにはどうすればよいですか?

+0

を描画ロジックを追加します。あなたは、あなたの質問を分かち書きに焦点を絞った質問に分割したいかもしれません。 – asawyer

+0

WinForms、APS、WPF、またはSilverlightを使用していますか? –

+0

これはWinFormsにあります。 – akd

答えて

2

描画は、.NET(WFA、WPF、およびXNAフレームワーク)で少なくとも3つの異なる方法で実行できます。この回答では、最も単純なWinFormsアプリケーションを使用していると仮定します。

.NETでのカスタムシェイプの描画/ペイントは、Graphicsクラスを使用して行います。すべてのフォームコントロールには、CreateGraphics()メソッドがあります。このメソッドは、メソッドを呼び出すコントロールのサイズと位置を画面上の「ボックス」への参照を提供します。そのGraphicsインスタンスを使用すると、さまざまなDrawメソッド(DrawCircle()など)を呼び出して、図形を画面に配置できます。 PenBrushおよびColorオブジェクトを読み上げる必要があります。彼らはあなたの円の枠線、塗りつぶし、および色を定義することができます。描画ロジックをコントロールのOnPaint()メソッドに配置します。このメソッドは、ウィンドウが再描画するように指示されたときに呼び出されます。オブジェクトを定期的に移動させるには、一定の間隔でTimerを設定し、移動ロジックを実行するハンドラーでそのTickイベントを登録します。あなたが一度移動した後は、Graphicsハンドルを持っているコントロールのInvalidate()に電話してください。コントロール自体が再描画されます。自分自身を再塗りつぶしするコントロールは、すべてのネストされたコントロールに自身を再描画するように指示するので、フォーム全体、または他の入れ子になったコントロールを配置するコントロールのグラフィックハンドルを取得することは避けます。 PanelまたはPictureBoxは、フォームウィンドウでスパンを占有するカスタムグラフィックスのための方法です。 BufferedGraphicsContextオブジェクトを使用してダブルバッファリングされたグラフィックを実装するか、またはの画像として設定したBitmapに独自の図形を描画して、独自の図形を作成することもできます。

3

スタートフォーム上のメソッドをオーバーライドするのOnPaintとし、これは特定のサブトピックの多くが付いている幅広い問題の一種である

protected override void OnPaint(PaintEventArgs e) 
{ 
    e.Graphics.DrawEllipse(new Pen(Color.Red), 0, 0, 100, 100); 
} 
関連する問題