1

スプライトを使用して、D3Dウィンドウに画像を描画します。長方形(0、0、幅、高さ)内のすべてのスプライトに画像を描画し、Matrix.Transformation2Dを使用してレンダリングされたビューに画像を配置します。

例:

using (Sprite s = new Sprite(device))
   {
      s.Begin(SpriteFlags.AlphaBlend);
      Matrix tranz = new Matrix();
      tranz =
         Matrix.Transformation2D(new Vector2(0, 0), 0.0f,
            new Vector2(scale, scale),
            new Vector2(0, 0), Geometry.DegreeToRadian(angle),
            new Vector2(positionX, positionY));

      s.Transform = tranz;

      Vector3 spriteCenter = new Vector3(0.0f, 0.0f, 0.0f);
      Vector3 sprPosition = new Vector3(0.0f, 0.0f, 0.0f);

      s.Draw(someTexture, new Rectangle(0, 0, width, height), 
         spriteCenter, sprPosition,
         Color.FromArgb(0xff, 255, 255, 255));
      s.End();
   }

特定の画像がクリックされたことをどのように検出できますか?

既知のパラメーター:1。マウスの位置:mouseX、mouseY2.すべてのtransformation2Dパラメーター3.スプライト内の画像のサイズと位置。

これは私が欲しいものを得るのに十分なデータであるはずですが、私には何をすべきか見当がつかないのです。

ところで-計算に含める世界の変換やその他はありません。スプライトを変換するだけです。

4

1 に答える 1

1

matrix.Invert()を使用してそれを行うことができるはずです。擬似コード:

Foreach sprite
    Matrix inverse = tranz.Invert()
    objectCoords = mouseCoords * inverse;
    if (objectCoords in (0,0,width, height))
        return sprite

return null;
于 2010-12-21T17:06:00.250 に答える