레이블이 C#인 게시물을 표시합니다. 모든 게시물 표시
레이블이 C#인 게시물을 표시합니다. 모든 게시물 표시

2009년 4월 22일 수요일

[Smart Phone] 투명 PNG 파일 출력하기

 윈도우모바일의 기본 UI는 솔직히 말해서 구려도 너무 구립니다. 아이폰이나 안드로이드가 기본적으로 화려한 UI를 제공하는 것에 비하면 많이 부족한 거 같습니다. 윈도우모바일7이 나오면 많이 개선될 거 같긴 합니다만 당장은 화려한 UI를 표현하기 위해서 PNG 출력 방법이 절실한 거 같습니다. 지금 만들고 있는 프로그램도 모두 PNG이미지로 UI를 구성하고 있는데요, 이렇게 하다 보니 코드로만 UI를 짜고 비쥬얼 스튜디오에서 Design창을 열 일이 없네요... 얼른 윈도우모바일7이 나와서 멋진 UI를 편하게 이용할 수 있었으면 좋겠습니다.

아래는 전체 소스입니다.

Form1.cs


실제 PNG 출력을 위해서는 아래의 파일이 필요합니다. Windows Mobile 5.0 SDK에 있는 imaging.h라는 헤더파일로부터 필요한 각종 함수와 그에 필요한 Flag를 선언하는 부분입니다. 자세한 설명은 생략하겠습니다. 그냥 붙여 쓰시면 될 거 같습니다.

IImagingFactory.cs


아래는 옴니아에서 실제 실행해본 결과화면입니다.

2009년 4월 20일 월요일

[Smart Phone] WAV 파일 재생하기

아이폰과 안드로이드에 무게를 두고 공부 겸 개발을 하려고 마음 먹고 있습니다만, 외부 요청에 의해 간단한 윈도우 모바일용 어플리케이션을 개발하고 있는 중입니다. 따지고 보면 이번이 2번째 어플리케이션 개발인데요... 저도 공부하고 배우면서 하는 입장이라 개발을 하면서 사용한 코드를 이렇게 간단한 팁형식으로 틈틈히 포스팅하고자 합니다. 국내 검색엔진에서 윈도우 모바일과 관련해서 검색을 하면 관련 자료가 찾기 힘든 편이고, 간결하면서도 필요한 코드만 있는 내용을 찾기가 힘든데요... 제가 포스팅하는 내용들이 저와 같은 많은 초보분들에게 도움이 되었으면 합니다. 개인적으로 코딩을 할 때 레고를 조립한다는 생각을 갖고 임하는데요... 그래서 어떤 강좌 형식보다는 이렇게 부분부분적으로 완전히 작동하는 코드를 공개하는 것이 편한 거 같습니다.

어쨌든 이번에 공개하는 코드는 WAV파일을 재생하는 간단한 코드입니다. 이번에도 함수를 기존 API에서 Pinvoke시켜와서 사용하는데요... C#은 사용하기는 엄청 편리하지만, 문법이나 구조적인...?! 부분에 있어서 그 역할을 담당하고, 나머지 기능적인역할을 하는 많은 부분은 항상 API에 의존해야하는 거 같습니다. 그래서 검색할때도 관련 API를 먼저 찾고 그것을 C#으로 Pinvoke시켜서 사용해보는 것이 가장 빠른 방법인 거 같습니다. C#에서 다이렉트하게 어떤 기능을 구현하는 방법은 아예 없다고 보면 될 거 같거든요.

코드는 아래와 같습니다. 무척 간단합니다.



다음으로는 그래픽 출력과 관련해서 연속적으로 포스팅하려고 합니다. 더블 버퍼링과, PNG춮력, AlphaBlend() 함수 사용이라던지... 윈도우 모바일의 구질구질한 UI를 벗어날 수 있게요ㅋ

2009년 3월 12일 목요일

[Smart Phone] T옴니아의 모션(가속도) 센서 사용하기

제가 T옴니아가 아닌 다른 스마트폰에서는 테스트 해보지는 못했습니다만 아마 다른 모션, 가속도 센서를 장착한 윈도CE나 모바일 기반 장치들도 DeviceIoControl이라는 함수를 이용해서 똑같이 센서값을 읽어올 거 같습니다. (혹시 아시는 분 계시면 코멘트 좀...)

아래 소스는 사실 T옴니아 경진대회에서 삼성전자가 제공한 C++소스를 이용한 것이며, 이전의 진동이나 터치 인식과 같이 C#에서 지원하는 메쏘드를 사용하기 보다는 API를 끌어와서 사용하고 있습니다.

아래는 전체 코드 입니다.

[Smart Phone] 마우스 포인터, 터치 좌표 인식하기

윈도 모바일에서 마우스 포인터 위치나 터치 좌표를 인식하는 코드입니다.
T옴니아에서 태스트해보니 옵티컬 마우스를 움직여도 좌표를 인식합니다. 그리고 두 군데를 터치했을 때는 두 지점 사이의 중점 좌표가 찍히는데, 이 부분을 이용한다면 멀티 터치도 구현할 수 있을 거 같습니다.

아래는 실제 코드입니다.
 
값을 사용할 때는 아래와 같이 하면 됩니다.

2009년 3월 11일 수요일

[Smart Phone] C#에서 모바일 장치에 진동 발생 시키기

공짜로 옴니아가 생기면서 한달전정도부터 윈도 모바일 어플리케이션 개발에 관심이 생겼습니다. T옴니아 개발 경진대회가 있었지만 X뉴비로써는 아직 벽이 높다는 걸 깨닫고... 다음 대회를 한 번 노려보기로 했구요ㅜ 한 달 동안 알게 된 것들을 공유하기로 했습니다. 윈도우 모바일 관련 자료는 국내 사이트에서는 찾기가 힘들더라구요... 아는 건 몇 개 없지만 공유의 정신! 이 중요한 거 아니겠습니까- ㅋㅋ

T옴니아를 기준으로 하는 코드지만 다른 모바일 장치에도 충분히 사용가능한 코드입니다.
LED를 컨트롤하는 함수를 사용하는 것을 봐서 보통 모바일 장치에서 진동 모터는 LED출력 포트와 함께 연결되어 있나 봅니다. 어쨌든 C#에서는 직접적인 메쏘드를 지원하지 않기 때문에 API를 끌어와서 사용함으로써 진동을 작동시킬 수 있습니다.

아래는 실제 코드입니다.

실제 사용할 때는 다음과 같이 사용하면 되겠죠ㅋㅋ