Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 팁&트릭
Delphi Programming Tip&Tricks
[17] [팁] Anti-Aliasing 처리된 글자 출력...
박종민.BacTeria [bacteria] 6325 읽음    2002-03-26 09:39
안녕 하세요? BacTeria 박종민 입니다.

오늘은 Anti-Aliasing 처리된 글자 출력 방법에 대한 팁입니다.

그냥 Canvas에 Text를 출력할 경우엔 글자의 외곽 부분이 거칠게 표현이 되는데 반해 Anti-Aliasing 처리를 하게 되면 부드럽게 표현이 됩니다.

자세한 설명은 아래의 코드로 대체 하겠습니다.

그럼 이만...

- 박종민 드림...

PS. 델파이 만만세!! ㅋㅋ

var
  Form1: TForm1;
  OldFont, NewFont: HFont;

implementation

{$R *.DFM}

procedure PrepareText(Canvas: TCanvas);
var
  FontName: string[255];
begin
   {-- Sets the font ----------------------------------------}
   FontName := Canvas.Font.Name+#0;

   NewFont := CreateFont(
        { Height      } Canvas.Font.Height,
        { Width       } 0,
        { Escapement  } 0,
        { Orientation } 0,
        { Weight      } Ord(fsBold in Canvas.Font.Style)*FW_BOLD,
        { Italic      } Ord(fsItalic in Canvas.Font.Style),
        { Underline   } Ord(fsUnderLine in Canvas.Font.Style),
        { StrikeOut   } Ord(fsStrikeOut in Canvas.Font.Style),
        { CharSet     } DEFAULT_CHARSET,
        { OutputPrec. } OUT_DEFAULT_PRECIS,
        { ClipPrec.   } CLIP_DEFAULT_PRECIS,
        { Quality     } ANTIALIASED_QUALITY,
        { Picth       } DEFAULT_PITCH + FF_DONTCARE,
        { FaceName    } @FontName[1]);

   OldFont := SelectObject(Canvas.Handle, NewFont);

   Canvas.Brush.Style := bsClear;
end;

procedure UnprepareText(Canvas: TCanvas);
begin
  SelectObject(Canvas.Handle, OldFont);
  DeleteObject(NewFont);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Canvas.Font.Size := 100;
  Canvas.TextOut(10, 10, 'Test String...');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  PrepareText(Canvas);

  Canvas.Font.Size := 100;
  Canvas.TextOut(10, 210, 'Test String...');

  UnPrepareText(Canvas);
end;

+ -

관련 글 리스트
17 [팁] Anti-Aliasing 처리된 글자 출력... 박종민.BacTeria 6325 2002/03/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.