1

XNA でゲームを作成するために使用する一連のアプリケーションを開発しています。Graphics.drawImage を使用すると、XNA texture2D オブジェクトから簡単にプレビュー イメージを描画できます。

キャラクター、マップなどの各オブジェクトはパーツのリストで構成され、各パーツは位置の回転やテクスチャ ソースなどの情報を格納します。次のステップは、オブジェクトの一部ではなく全体のプレビューをレンダリングすることです。

これについてどうすればいいですか?Graphics.drawImage を通常の XNA 描画呼び出しとして扱い、List をループして各項目をビットマップに適切な位置と順序で描画することにより、必要なオブジェクトのセクションをビットマップにレンダリングすることはできますか? または、各 graphics.DrawImage 呼び出しは、描画先のビットマップを破棄しますか?

4

2 に答える 2

2

これはあなたが探しているものですか?

   Bitmap bmp = new Bitmap(100, 100);
   Graphics g = Graphics.FromImage(bmp);
   g.DrawImage(Properties.Resources.Foo);
   Bitmap bar = Properties.Resources.Bar;
   bar.MakeTransparent(bar.GetPixel(0, 0));
   g.DrawImage(bar);

画像が透明である限り (実行時に Bitmap.MakeTransparent() を呼び出して実行できます)、ビットマップを「破壊」することなく、DrawImage を複数回呼び出してレイヤーを作成できます。

于 2009-06-15T15:04:56.113 に答える
0

正しいと思います。Texture2D xnaオブジェクトのセットがあり、それぞれがファイルへのパスを格納しています。Image.FromFile()を使用して、このパスを使用してImageオブジェクトを作成します。次に、Graphics.DrawImage()とセクションを説明するRectangleを使用して、画像のセクションをGraphicsオブジェクトに描画する必要があります。ここから、Back to Frontの順序で複数のg.DrawImage()呼び出しを行うことができます。

Texture2D、そしてそのことについてはImageは透明性に対応でき、私のtexソースはすべてPNG形式なので、Bitmapクラスの代わりにImageクラスを使用して、MakeTransparent呼び出しの手間を省くことができると思います。

于 2009-06-15T22:31:22.833 に答える