연오랑 wrote:
> Canvas.Textout을 사용해서
>
> 이미지에 텍스트를 썼는데
>
> 이때 쓴 텍스트를 자동으로 중앙에 오게 하는 방법이 없나요??
>
> 밑에 질문이랑 겹치지만..
>
> 답변 주시면 바로 삭제하겠습니다..
>
> 그럼 고수님들의 조언부탁드립니다..
///////////////////////////////////////////////////////
아래처럼 계산해도되는데요, 더종은 방법도 있을듯합니다.
procedure TForm1.Button1Click(Sender: TObject);
var
Bmp: TBitmap;
xx, yy : integer;
str : string;
begin
Bmp := TBitmap.Create;
Bmp.LoadFromFile('D:참고자료아이콘아이콘모음모음88전차2.bmp');
Bmp.Canvas.Brush.Style := bsClear;
str := '원하는무자열';
xx := Round(Bmp.Width/2 - Bmp.Canvas.TextWidth(str)/2);
yy := Round(Bmp.Height/2 - Bmp.Canvas.TextHeight(str)/2);
Bmp.Canvas.TextOut(xx,yy,str);
Image1.Picture.Bitmap := Bmp;
SpeedButton1.Glyph := Bmp;
Bmp.FreeImage;
end;
해당 방법은 폰트에 대해서 한번 찾아보시지요.
출력하고자하는 문자열이 어떤 폰트냐에 따라서 픽셀수가 다 틀리거든요.
그러니까 일단 폰트 정보를 읽어서 한 글자가 차지하는 픽셀수를 구하고 나면 출력하는데 중앙으로 잡든 오른쪽 정열을 하던 쉽게 가능할것 같습니다.
즐프하세요. ^^
홍성락 wrote:
> 연오랑 wrote:
> > Canvas.Textout을 사용해서
> >
> > 이미지에 텍스트를 썼는데
> >
> > 이때 쓴 텍스트를 자동으로 중앙에 오게 하는 방법이 없나요??
> >
> > 밑에 질문이랑 겹치지만..
> >
> > 답변 주시면 바로 삭제하겠습니다..
> >
> > 그럼 고수님들의 조언부탁드립니다..
> ///////////////////////////////////////////////////////
> 아래처럼 계산해도되는데요, 더종은 방법도 있을듯합니다.
> procedure TForm1.Button1Click(Sender: TObject);
> var
> Bmp: TBitmap;
> xx, yy : integer;
> str : string;
> begin
> Bmp := TBitmap.Create;
> Bmp.LoadFromFile('D:참고자료아이콘아이콘모음모음88전차2.bmp');
> Bmp.Canvas.Brush.Style := bsClear;
> str := '원하는무자열';
> xx := Round(Bmp.Width/2 - Bmp.Canvas.TextWidth(str)/2);
> yy := Round(Bmp.Height/2 - Bmp.Canvas.TextHeight(str)/2);
> Bmp.Canvas.TextOut(xx,yy,str);
> Image1.Picture.Bitmap := Bmp;
> SpeedButton1.Glyph := Bmp;
> Bmp.FreeImage;
> end;