web-dev-qa-db-ja.com

C#でシンプルなグラフィックスを描画するにはどうすればよいですか?

C#で円、線、正方形などの単純な2Dオブジェクトを描画したいだけです。それ、どうやったら出来るの? Turbo C++時代に戻って、同じことをするためにいくつかのグラフィックライブラリを初期化したことを覚えています。 .NETでも同様のことをする必要がありますか? 3Dオブジェクトでは何か違いがありますか? DirectXのようなものがこれを簡単にしますか?チュートリアルやサンプルへのリンクは大歓迎です。

17
msvcyc

他の人が言ったように、 System.Drawing をチェックしてください。 (完全を期すために繰り返します。)System.Drawingは GDI + Windows描画ライブラリをアプリケーションに公開します。

System.DrawingとGDI +をすぐに使い始めるのに適したチュートリアルが C#Corner にあります。

注意すべきいくつかの重要な項目:

  1. 多くのGDI +オブジェクトはIDisposableインターフェイスを実装しているため、usingブロックでラップする必要があります。適切な廃棄規則に従ってください。 GDI +オブジェクトの破棄に失敗すると、アプリに非常に厄介な副作用が発生する可能性があります。 (.NETのGDI +オブジェクトは、基盤となるWindows APIの対応物に対応しています。)
  2. DirectXなどのAPIは非常に複雑で、正当な理由があります。シンプルな形状ではなく、複雑で高性能でインタラクティブなマルチメディアアプリケーション向けに設計されています。 (言い換えれば、通常はゲームです。)DirectXには、Managed DirectXインターフェイスを介してアクセスできますが、ここでも、直接的な目的のためにやり過ぎる可能性があります。
  3. DirectXを使用する簡単な方法に興味がある場合は、 [〜#〜] xna [〜#〜] が適しています。ただし、これは非常にゲーム固有のライブラリであり、やはりやり過ぎになる可能性があります。パーティーには少し遅れますが、以下のコメントによると、これはもはやサポートされていません。 (これは理にかなっています;私はそれについて何年も聞いていません。)
21
John Rudy

以下に、簡単なコードサンプルを示します(pictureBox1という名前のPictureBoxがあるとします)。

Bitmap bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
using (Graphics g = Graphics.FromImage(bmp))
{
    g.DrawLine(new Pen(Color.Red), 0, 0, 10, 10);
}
pictureBox1.Image = bmp;

グラフィックスオブジェクトには他の多くの描画メソッドがあり、それらを呼び出す方法をIntellisenseが示します。

14
MusiGenesis

GDI、GDI +、System.Drawing名前空間、たとえば here についてお読みください。
DirectXは、単純な形状を描画するために使用するものではなく、複雑な3Dのものをレンダリングします。また、C#でDX Apiを使用するのは少し難しいです(ただしそれほど難しくはありません)。

3
Marcin Deptuła

System.Drawing名前空間を確認してください: http://msdn.Microsoft.com/en-us/library/system.drawing.aspx

1
Keith

System.Drawingを使用したGDI +

0
amy

System.Drawing名前空間を見てください。

0
Kevin LaBranche

GDI +を使用する必要があります。

それをどのように行うかは、何を描きたいかによります。コントロールやフォームに描画したり、画像オブジェクトに描画したりできます。どちらにしても、System.Drawing.dllにあると私が信じているSystem.Drawing.Graphicsオブジェクトが必要です。

新しいBitmapクラスをインスタンス化してGraphics.FromImage(myImage)を呼び出し、作成したGraphicsオブジェクトのメソッドを使用して描画できます。フォームまたはコントロールに描画する場合は、OnPaintメソッドをオーバーライドして、EventArgsクラスのGraphicsプロパティを探します。

System.Drawing名前空間の詳細については、こちらをご覧ください: http://msdn.Microsoft.com/en-us/library/system.drawing.aspx

0
Max Schmeling

.NETでManaged Direct3DグラフィックAPIを探してください Source

0
Myra