2014-06-07 4 views
0

간단한 하스켈 게임의 GUI를 표시하기 위해 wxHaskell을 사용하고 있습니다.wxHaskell에서 장치 컨텍스트 (DC)를 얻으려면 어떻게해야합니까?

나는 문제가있다 : 나는 간단한 게임의 GUI 부분을 쓰고있다. 게임 상태가 업데이트되면 GUI 모듈의 기능 중 하나가 호출되고 새로운 게임 상태 매개 변수가 전달됩니다. GUI가 지금 업데이트되어야합니다. GUI는 거의 직사각형이 아니며, GUI를 업데이트하면 이전 GUI 위에 몇 가지 새로운 사각형이 그려집니다.

그러나 사각형을 그리려면 장치 컨텍스트 DC를 인수로 전달해야합니다. 보드의 첫 번째 페인팅은 패널에서 내 직사각형이 포함 된 "페인트 칠"이벤트의 결과로 수행됩니다. 켜기 그림판 핸들러에 서명이 있어야합니다.

DC a -> Rect -> IO() 

이벤트가 발생하면 dc가 전달되고 보드가 표시됩니다.

질문 : DC는 어떻게 얻을 수 있습니까?

다른 질문 : 이벤트 처리기에 특정 서명이 필요한 경우 - 처리기에 추가 인수를 전달하려면 어떻게해야합니까?

+0

예제는 http://www.haskell.org/haskellwiki/WxHaskell/Quick_start에서 보았습니까? 3 절의 파트는 on paint 이벤트를 사용하여 그리기를 수행하는 방법을 보여줍니다. – InFreefall

답변

0


repaint :: w -> IO()을 살펴보십시오. 다시 칠할 프레임/패널을 전달하고 dc가 필요하지 않습니다. 나는 다음 pdf를 통해이 기능을 발견했다. 아주 좋은 wx 튜토리얼. 저자는 간단한 게임도 만들고 있습니다. 도움이 될 수도 있습니다. http://web.archive.org/web/20120211184204/http://legacy.cs.uu.nl/daan/download/papers/wxhaskell.pdf

+0

그건 정확히 내가 사용했던 것이지만, 나는 나의 접근 방식이 처음부터 잘못되었다고 생각한다. 이것은 내 첫 하스켈 프로젝트 였고 순수 함수 프로그래밍 대신 OOP를 염두에두고 있었다. 나중에 시작해서 훨씬 더 나은 결과를 얻었습니다. 답변 주셔서 감사합니다! – pkuszewski