Q&A

  • TLabel을 90도 회전 어떻게 하나요?

안녕하세요. 이호림이라고 합니다.
프로그램 개발 중에 TLabel 컴포넌트를 오른쪽으로 90도 회전을 해야 되는데요.
어떻게 하는지 잘 모르겠어요.

게시물 검색해 보니까 델파이2006 버전에서는 Font.Orientation 프로퍼티가 추가되어
각도 * 10 하면 된다고 어느분이 하셨는데요. Font.Orientation 조정해도 화면에 나타나질 않습니다.

고수님들의 조언 부탁드립니다.  
2  COMMENTS
  • Profile
    송 시중 2007.10.10 01:25
    아마도 제 글을 보신것 같은데, 프린트 관련 글이였습니다.
    프린트 / 이미지의 Canvas에서는 되겠지만
    컴포넌트를 폼에 올리는 상황에선 Font.Orientation이 안 먹을 겁니다....

  • Profile
    Marek 2007.10.09 03:08
    안녕하세요

    아래코드로 테스트 해보십시요.  엄밀히 말하면 Label의
    폰트를 회전시키는 것입니다.

    <!--CodeS-->
    procedure TForm1.TextOutAngle(x,y,aAngle,aSize: integer; txt: string);
    var hFont, Fontold: integer;
        DC: hdc;
        Fontname: string;
    begin
      if length(txt)= 0 then
        EXIT;
      DC:= Label1.Canvas.Handle;
      SetBkMode(DC, transparent);
      Fontname:= Label1.Canvas.Font.Name;
      hFont:= CreateFont(-aSize,0, aAngle*10,0, fw_normal,0, 0,
                         0,1,4,$10,2,4,PChar(Fontname));
      Fontold:= SelectObject(DC, hFont);
      TextOut(DC,x,y,PChar(txt), length(txt));
      SelectObject(DC, Fontold);
      DeleteObject(hFont);
    end;


    procedure TForm1.Button1Click(Sender: TObject);
    begin
       //라벨의 width=17, Height=51로, Autosize는 False로 테스트 하십시요.
       Label1.Caption := '';
       TextOutAngle(5,50, 90, 9, '테스트');  
    end;
    <!--CodeE-->
    이 코드는 Label 내부의 X좌표=5, y좌표=50에 90도회전하여, 폰트크기=9를 돌려서
    찍는 코드입니다.

    좋은 하루 되십시요.