[까막] 완성형 폰트 -> BMP (수정됨)  | VC++ 일반 2005-03-22 오전 10:24:19
까막 (crowback)  까막님께 메시지 보내기까막님을 내 주소록에 추가합니다.까막님의 개인게시판 가기 번호: 18709   / 평점:  (-)  / 읽음:2,741

안냐세염.. 까막임돠..


몇몇분이 계속 요청하셔서 소스를 함께 올립니다.


위 프로그램은 일반 응용프로그래머 라면 별반 필요치 않을 테구요.. 이미지 폰트 작업을 하시거나

LCD 등에 폰트 디스플레이 작업을 하시는 경우 간혹가다 필요할겁니다.


1. 폰트를 LCD등에 사용할 경우, 아래방향으로 (보통 윈도우는 왼쪽에서 오른쪽으로) 저장되는

    C 파일이 생성됩니다.


2. 그 상태를 BMP로 저장해 줍니다.


이렇게 두가지 파일 양식으로 저장해 주구요, 소스 보면 허접하지만, 걍 필요한 내용을 비트맵으로

뿌려서, 필셀 읽어서 바이트 단위로 나눈다음, Hex로 출력 포멧을 만들어 파일에 뿌리는게 다입니다.


비트맵으로 저장하는건 부수적인 것으로 걍 중간 단계를 거치니까 파일로 저장해 본 것 뿐이구요..


옵션에 여백 설정부분은 보통 폰트를 디스플레이 하실때, 반전하시면 왼쪽과 위쪽에는 여백이 없기 땜시

반전하는 부분의 이미지가 깨끗해지지 못하는 부분이 생성됩니다.

이를 위하여 픽셀단위로 여백을 넣을 수 있게 만들어 보았습니다.



소스파일에 대한 개략적인 설멍을 넣어보면, 걍 다이알로그 베이스에 다음과 같은 두개의 주요 파일이 있습니다.

Preview.cpp / BitmapFont.cpp

하나는 미리보기 형식을 지정하는 놈이고, 다른놈은 미리보기 형식에서 픽셀을 읽어 파일로 써주는 놈입니다.

코드 자체는 무자게 짧고 간단하니, 주석은 없습니다 -_-;;;


PS. GetPixel을 써서 픽셀을 읽어오는데 <= 이거 느리다는거 알고 있죠? 비트맵데이터 처리하는게 귀찬기도하고

      이미지데이터 돌리기도 귀찬거니 해서, 사용한겁니다. 쫌 느려도 몇초정도니, 속도에 불만이신 분은

      수정하셔서 올려주셔도 무방합니다. ^^;


------------------------------------------------------------------------------------------------------


코멘트를 보구, 프로그램을 수정하였습니다.

제가 쓰는 LCD가 소형이다 보니, 큰 글을 뿌릴일이 없었고, 대형폰트는 고려하지 않고 만들다 보니.. -_-;


비트맵을 생성해 보니, 54*54 를 넘어가는 폰트는 비트맵생성에 실패하는 군요..

대형 폰트를 처리할려면, 전체 비트맵을 만드는 것은, CBitmap로는 불가능하구요..

해당 글짜마다 소형 비트맵을 만들어 합쳐야 할거 같네요.


오른쪽 부분에 '갉' 이라고 보이는건, FNT 파일로 저장된 것을 읽어서 LCD 타입으로 출력한 것입니다.

파일이 정상적으로 저장되면, 크기에 맞는 '갉'이 뿌려지도록 아주 허접한 테스트 코드를 넣어봤습니다.


테스트용으로 만든거라, 많은 신경을 못써서 결국 제한이 가해지는 허접한 샘플이 되고 말았네요.


일단, 올린 자료이니 위의 범주에서 다시 문제가 발생하면, 코멘트 달아주세요.



+ Recent posts