2009-05-07 7 views
2

저는 자유 시간에 디자인하고있는 XNA 게임용 맵 편집기에서 작업하고 있습니다. 지도에 사용 된 미술 작품은 하나의 텍스처에 저장되며 사각형에는 좌표와 너비 등이 저장됩니다.이미지의 일부분을 비트 맵으로 렌더링합니다. C# Winforms

winforms 애플리케이션에서는 목록 상자에서 원하는 세그먼트를 선택하여 세그먼트를 추가 할 수 있습니다. 가능한 세그먼트 (segment)의 배열

문제는 내가 선택한 세그먼트의 미리보기를 표시 할 수 있고 일반적인 질감에 저장되어 있기 때문에 단순히 이미지를 표시 할 수있는 그림 상자를 설정할 수 없습니다.

사각형 상자 정보 (.x, .y, .width, .height)를 사용하여 그림 상자에서 이미지의 섹션 만 표시하거나 섹션을 비트 맵에 블리 팅하고 표시하는 방법이 있습니까?

많은 감사

마이클 알렌

답변

9

아마도 GDI 라이브러리를 살펴보고 싶을 것입니다. 이미지 또는 비트 맵 객체와 Graphics.DrawImage()를 함께 사용하면 원하는 것을 얻을 수 있습니다.

private void DrawImageRectRect(PaintEventArgs e) 
{ 

    // Create image. 
    Image newImage = Image.FromFile("SampImag.jpg"); 

    // Create rectangle for displaying image. 
    Rectangle destRect = new Rectangle(100, 100, 450, 150); 

    // Create rectangle for source image. 
    Rectangle srcRect = new Rectangle(50, 50, 150, 150); 
    GraphicsUnit units = GraphicsUnit.Pixel; 

    // Draw image to screen. 
    e.Graphics.DrawImage(newImage, destRect, srcRect, units); 
} 

PictureBox와 GDI를 사용하는 대신 WinForm에서 XNA를 사용하는 것이 좋습니다. 아직 100 % 지원되지는 않지만 그것에 대한 지침서는 here입니다.

+0

죄송합니다. 더 분명히 했어야합니다. Winforms 응용 프로그램에는 MapData 클래스에서 제공 한 예제와 비슷한 시스템을 사용하여지도를 표시하는 XNA 렌더링 구성 요소가 포함되어 있습니다. 나는 모든지도 상호 작용을 위해 좌표를 화면에 표시하고 그 작업을 지금까지 잘 해왔다. MapData 맵 객체 내에 Texture2의 배열이 있습니다.이 배열에는 XNA 구성 요소가 타일 및 세그먼트 섹션을 그리는 데 필요한 모든 텍스처가 포함되어 있습니다. 내가 원하는 것은 세그먼트 정의의 배열에서 직사각형을 가져 와서 winforms 응용 프로그램에서 정의한 텍스처의 일부를 렌더링하는 것입니다. 선택한 세그먼트 나 타일의 미리보기로 –

+0

을 사용하십시오. 이 접근법을 시도 하겠지만 DrawImage가 Texture2를 처리 할 수있는 것은 아닙니다. –

+0

저는 XNA 전문가가 아니며 단지 그 주변을 놀래켜 연주했습니다. 즉, "Texture2"가 무엇이든 상관없이 Texture2D를 사용할 것입니다. SpriteBatch를 사용하면 텍스처를로드하고 Draw() 함수를 사용하여 원하는 것을 얻을 수 있습니다. 좋은 자습서는 다음에서 찾을 수 있습니다. http://msdn.microsoft.com/en-us/library/bb194908.aspx 대상 및 원본 사각형을 사용하는 Draw() 함수를 사용해야합니다. – Balk

0

당신은 Graphics.DrawImage()를 사용하고 그 사각형을 받아 들일 것입니다.

관련 문제