Canvas의 그리기는 비트맵의 한 셀을 무조건 채우는 방식으로 구현되어있습니다. (브랜슨햄!)
이런 경우 말씀하신 것 처럼 투박한 느낌을 받게되고 이를 소위 "알리아싱"이라고 표현합니다.
이 알리아싱을 없애는 기법들을 일컬어 "안티알리아싱" 이라고 부르고 있지요.
선의 경우 그려질 픽셀값이 실제 선의 수치값과 비교해 얼마만큼의 강도를 가지는가에 따라
배경과 적절한 블랜딩을 통해 이런 안티알리아싱을 구현하게 됩니다.
(실제 크기보다 훨씬 큰 버퍼에 그린 뒤 크기를 조절하는 방법도 있지요... )
TGraphic32 라는 걸출한 라이브러리를 소개해드립니다.
http://graphics32.org/wiki/
다른 부분은 일단 접어두시고, SetPixel 과 Line 쪽 코드를 찬찬히 뜯어보시면
원하시는 해답을 얻으실 수 있어요.
Hillfolk 님이 쓰신 글 :
: 캔버스에 그리는 선 관련 질문좀 드릴께요.
:
: 캔버스에 라인을 그려서 쓰고 있는데 이선이 너무 투박해서 좀더 스무스한 선으로 바꾸고 싶습니다.
:
: 적용 가능한 설정 같은게 있나요?
:
: 현재는 드로우라인으로 기번 선을 그래서 사용 하고 있습니다.
:
: 어디서 부터 접근을 해결해서 선을 바꿔야 할지 모르겠네요 혹시 방향 제시 부탁드립니다 .
:
: Canvas.Brush.Style := bsClear;
: Canvas.Pen.Color := clYellow;
:
:
: Canvas.MoveTo(X1, Y1);
: Canvas.LineTo(X2, Y2);
: Canvas.MoveTo(X3, Y3);
: Canvas.LineTo(X1, Y1);
:
: 펜 스타일은 위와 같이 쓰고 있지만 제가 원하는건 점선 이런건 아니고요 좀더 부드럽게 라인이 그려졌으면 좋겠습니다.
: 선을 그리는 도트 하나가 좀더 작았으면 하다는 말이 맞겠네요.
|