Windows CE 장치들은 강력한 마이크로프로세서를 장착하고 있습니다만 일정관리 소프트웨어를 만들기 위해 슬라이더 메뉴바를 만들어 테스트를 해본 결과 비트맵을 입힌 컨트롤이 슬라이딩을 할 때 무척이나 자연스럽지(부드럽지) 못한 결과가 나와 당황한 적이 있습니다.

물론 코더의 능력과 테크닉적인 부분이 많이 필요한 것이라 생각됩니다.

슬라이딩을 할 때 몇 밀리세컨드마다 DC를 업데이트 해야 할지, 움직인다면 몇 픽셀다마 업데이트 해야 할지, 일정한 픽셀마다 해야할지 가속도를 감안해서 픽셀 간격이 자동으로 줄어들지, 늘어날지.. 생각할 여지가 너무 많습니다.

아직 이런 것들에 대한 자료를 수집하지 못했기 때문이라 생각됩니다만 혹시나 해서 업데이트 가능한 밀리세컨드당 ( 1000 ms ) 업데이트 속도를 확인하기 위해 GAPI를 사용해보았습니다.

GAPI는 Windows CE 에서 제공하는 API로 비슷한 것으로는 DirectX가 있습니다만, DirectX보다 훨씬 지원하는 함수가 적습니다.

하지만 직접적인 디스플레이 장치의 프레임버퍼에 접근하여 엑세스할 수 있음으로 빠르고 부드럽게 화면을 조작할 수 있다는 장점이 있습니다.

GAPI는 하나의 DLL로 제공되는데 윈도우즈 폴더(\windows)에 GX.DLL 이라는 이름으로 존재합니다.
다만 PocketPC 2003 이상의 버전에서만 존재하는 함수입니다.

사용자 삽입 이미지

위의 디펜던시 결과를 보더라도 사실 익스포트 하는 함수는 몇개가 안됩니다.

상위의 GAPI를 사용하여 만들어본 샘플 프로그램은 스탑워치입니다.

최대한 현재 판매되는 스탑와치(보통 시계 액정)처럼 밀리초단위가 바뀌는 스피드를 확인 가능하도록 쓰레드에서 프레임버퍼에 작성하는 시간동안의 연산 시간을 최대한 줄였으며 화면내의 rps가 refresh per second를 나타냅니다.

사용자 삽입 이미지
사용자 삽입 이미지

테스트 해보니 에뮬레이터에서는 190~200 정도였습니다.
제 PDA 블루버드 BM500 에서는 절전모드에서는 130~135, 일반모드에서는 225~230 그리고 터보모드에서는 290~295까지의 속도를 보여주고 있네요.
사실 사람눈에는 초당 13회 정도만 되면 부드럽게 보여진다던데..
아마도 다른 테크닉이 필요한 것이 아닌가.. 하는 생각이 드네요.

테스트 하기위해서는 아래의 파일이 필요합니다.
위의 파일은 폰트 파일로 PDA의 가장 최상위의 위치에 복사해야 합니다.
숫자 및 영어를 픽셀단위로 프레임버퍼에 복사하기위해서 필요한 파일입니다.


그리고 아래의 파일은 실행 파일로 PDA의 아무런 위치에 복사해서 실행시키면 됩니다.

보통 스탑와치에 Lab time을 측정하기 위한 기능을 제공하는데 그 기능은 구현하지 않았습니다. 터치 스크린에 클릭할 때마다 그냥 0 부터 카운트 합니다.

종료하기 위해서는 하드웨어키를 아무것이나 누르면 됩니다.
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기