본문 바로가기

Graphic/FreeType

FreeType 예제1. GDI 이용한 글씨 출력.


New Job.zip





http://www.soenlab.com 에 있는 예제를 그대로 복붙했지만 그래도 한번만들어 봤다는것에 의미를 둔다.

핵심 소스는 아래와 같다. GDI를 이용해 글씨를 출력하기 때문에 글씨가 그려지는것이 눈에보인다. 

다음에는 OpenGL을 이용해서 출력해봐야 겠다.


         hdc=BeginPaint(hWnd, &ps);

		 // 폰트 읽음
		 error=FT_New_Face(library,"c:\\windows\\fonts\\batang.ttc",2,&face);
		 if (error != 0) {
			 // 에러 처리
		 }

		 // 글리프 인덱스 구함
		 index = FT_Get_Char_Index(face,TEXT('읭'));
		 if (index == 0) {
			 // 에러 처리
		 }

		 // 크기 설정
		 error=FT_Set_Char_Size(face, 256 * 64, 0,
			 GetDeviceCaps(hdc,LOGPIXELSX), GetDeviceCaps(hdc,LOGPIXELSY));

		 // 글리프 로드
		 error=FT_Load_Glyph(face,index,FT_LOAD_DEFAULT | FT_LOAD_NO_BITMAP);

		 // 랜더링
		 error=FT_Render_Glyph(face->glyph, FT_RENDER_MODE_NORMAL);

		 // 화면으로 출력
		 width=face->glyph->bitmap.width;
		 height=face->glyph->bitmap.rows;

		  for (y=0;y<height;y++) {
			 for (x=0;x<width;x++) {
                 // 해당 픽셀의 색을 갖고온다.
				 Color=255-face->glyph->bitmap.buffer[y*width+x];
				 if (Color != 255) {
                    // 비트맵의 해당좌표의 픽셀이 값을 갖고있으면 화면에 점을 찍어준다.
					 SetPixelV(hdc,0+face->glyph->bitmap_left+x,
						 300-face->glyph->bitmap_top+y,RGB(Color,Color,Color));
				 }
			 }
		 }

		 FT_Done_Face(face);
		 EndPaint(hWnd, &ps);



'Graphic > FreeType' 카테고리의 다른 글

FreeType  (0) 2013.03.12