2009-10-02 7 views
1

나는 Sprite를 사용하여 D3D 창에서 이미지를 그립니다. 사각형 (0, 0, 너비, 높이) 내의 모든 스프라이트에 이미지를 그리고 Matrix.Transformation2D를 사용하여 이미지를 렌더링 된 뷰에 배치합니다.Direct3D에서 마우스 클릭 감지 및 변환 2D

예 :

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, 쥐의 2. 모든 transformation2D는 스프라이트 내 3. 크기와 이미지의 위치를 ​​매개 변수.

이것은 내가 원하는 것을 얻기에 충분한 데이터 여야하지만, 나는 무엇을 해야할지 전혀 모른다.

BTW - 세계 변환이나 계산에 포함 할 기타 사항이 없습니다. 나는 단지 스프라이트를 변형시킨다.

답변

1

matrix.Invert()를 사용하여 수행 할 수 있어야합니다. 의사 코드 :

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

return null; 
관련 문제