간단한 XNA 4.0 게임을 작성했습니다. 이 게임을 렌더링하고 필요한 상호 작용 피드백 (키보드 및 마우스)을 XNA에 다시 제공하는 Windows Form 사용자 컨트롤을 만들고 싶습니다.Windows Form 사용자 컨트롤에 XNA 게임 삽입
XNA에서 :하십시오 RenderTarget2D에
리디렉션 XNA의 Game.GraphicsDevice
나는 다음을 시도했다.
가 이벤트를 캡처 :
- 는 KeyboardState 및 MouseState와 객체를 보내는 이벤트 윈폼에서 업데이트()
의 시작 부분에, 윈도우 폼에 의해 채워질을 방출 Windows Forms의 일반적인 키보드 및 마우스 이벤트로 얻은 데이터로 KeyboardState 및 MouseState를 채 웁니다. 의 OnPaint에
- 는 Game.RunOnFrame()를 호출
- (질감으로) 게임에서 RenderTarget2D를 가져옵니다.
텍스처의 데이터를 잠그고 사용자 정의 컨트롤의 그래픽에서 픽셀 단위로 페인트합니다.
또 다른 아이디어는 Game.Run() (새로운 스레드)을 호출하고 Game에서 RenderTarget2D를 보내는 이벤트를 내 보냅니다.
내가 찾은 다음과 같은 문제 :
내가 Game.Run를() 내가 리디렉션 해요 때문에 나는, 블랙 나타나는 게임의 창 (숨길 방법이 없습니다 호출하는 경우 렌더링)
Game.Run()은 새로운 이벤트 루프를 시작하고 (응용 프로그램 메서드를 호출하기 때문에) 다른 스레드에서 호출해야합니다. 그리고 나서 사용자가 만든 다른 스레드에서 사용자 정의 컨트롤에 페인트하고 있습니다. (나쁨, 나쁨)
컬러, Vector4와 RenderTarget2D 잠금, 심지어 Rgba32 나를 위해 일을 나타나지 않습니다
어떤 아이디어 (그것은 '잘못된 구조 크기'라고)?
미리 감사드립니다.
바보 같은 질문 - 왜 그런 짓을할까요? – RQDQ
이 튜토리얼 및 코드 샘플은 사용자가 원하는 작업을 정확하게 처리한다고 생각합니다. http : //create.msdn.com/ko-kor/education/catalog/sample/winforms_series_1 –
@RQDQ 그렇게 생각하지는 않는 것으로 생각합니다. xna 게임을 winform에 삽입하려는 이유 중 하나는 레벨 편집기를 만드는 것입니다. – annonymously