てか、久々にD3DXSpriteいじったらほんとに色々仕様が変わっててワロタ
デバイスロストとか色々対応してないけど後は自分で考えるんだ

class MySprite{
  MySprite( LPDIRECT3DDEVICE9 dev, TCHAR* file ) ;
  ~MySprite(){
    if(tex)tex->Release() ;
    if(sprite)sprite->Release() ;
  }
  void Draw(float x, float y, float w, float h ) ;

  LPD3DXSPRITE sprite ;
  LPDIRECT3DTEXTURE9 tex ;
  D3DXIMAGE_INFO info;
} ;
MySprite::MySprite(LPDIRECT3DDEVICE9 dev, TCHAR *file):sprite(NULL),tex(NULL)
{
  D3DXGetImageInfoFromFile(file, &info);
  D3DXCreateTextureFromFileEx(dev,file,info.Width,info.Height,
    1,0,D3DFMT_UNKNOWN,D3DPOOL_MANAGED,D3DX_DEFAULT,D3DX_DEFAULT,0,NULL,NULL,&tex);
  D3DXCreateSprite ( dev, &sprite ) ;
}
void MySprite::Draw(float x, float y, float w, float h)
{
  sprite->Begin(0) ;
  3DXMATRIX scale, trans ;
  D3DXMatrixScaling ( &scale, ((w==0)?info.Width:w)/(float)info.Width, ((h==0)?info.Height:h)/(float)info.Height, 0.0f ) ;
  D3DXMatrixTranslation ( &trans, x, y, 0 ) ;
  sprite->SetTransform(&(scale*trans)) ;
  sprite->Draw ( tex, NULL, NULL, NULL, 0xffffffff ) ;
  sprite->End() ;
}