질문과 답변

GDI+ TEXT출력 질문입니다. 날짜:2020-3-5 9:55:33 조회수:77
작성자 : Soad
포인트 : 5
가입일 : 2020-03-04 16:46:30
방문횟수 : 8
글 1개, 댓글 0개
소개 :
작성글 보기
쪽지 보내기
c++ gdi+로 글자를 그려보는데요
DrawString을 사용해보았습니다. Test mm이란 글자가 있을대 글자의 높이와 폭 정도를 임의로 지정해서
늘렸다 줄였다 하고 싶은데 어떻게 할 수 있을까요??
logfont 해보았는데 자동으로 글자크기만 변형되더라고요.

목록보기 삭제 수정 신고 스크랩

소엔 3월7일 5:55:44  

문자열의 크기는 어떤 폰트로 출력하는가에 따라 달라집니다. 폰트의 크기는 주로 높이로 지정하는데 폭은 글자마다 달라 일관되지 않기 때문입니다. 20픽셀 높이의 문자열을 출력하려면 그만한 크기의 폰트를 만들어 DrawString으로 출력하면 됩니다.

Font F(L"Arial",50,FontStyleRegular,UnitPixel);
PointF P(10.0f,10.0f);
SolidBrush B(Color(0,0,255));
G.DrawString(L"Test mm",-1,&F,P,&B);

이렇게 하면 약간의 여백까지 포함하여 대략 20픽셀 높이의 문자열이 출력됩니다.



이때 문자열의 폭은 어떤 문자열인가에 따라 달라집니다. 똑같은 5글자라도 ijl1! 같은 날씬한 글자와 BMW$& 같은 뚱뚱한 글자의 폭이 당연히 다릅니다. 실제 폭은 폰트와 문자열 구성에 따라 달라지며 이 폭을 구하는 함수는 MeasureString입니다. 문자열을 특정폭으로 출력하는 폰트를 계산하는 방법은 따로 없습니다. 문자마다 폭이 다르니 미리 계산할 수 없기 때문입니다. 문자열이 고정되어 있다면 평균폭으로 대충 곱해서 정한 후 원하는 크기가 맞는지 확인하는 방법밖에 없습니다.
이 외에 폭에 맞추기 위해 장평을 조정하는 방법도 있습니다. 그러나 장평은 글자의 모양을 바꾸기 때문에 정확하게 원하는 결과가 맞는지 잘 생각해 보아야 합니다.


로그인하셔야 댓글을 달 수 있습니다.