본문 바로가기
Delphi Tip/출력

델파이 인쇄 출력 9편

by MonoSoft 2023. 9. 6.
728x90
반응형

델파이 인쇄 출력

728x90

 

 

미리보기 구현

 

미리 보기가 필요한가?

글꼴은 다들 아시다시피 트루타입방식을 사용합니다.(대부분...)

그런데 화면은 비트맵구조를 사용하게 되죠..

 

예를들어서 '델파이체'라는 글꼴이 있다치고

그 글꼴의 문자중 'A'자의 크기가 가로로 300이고 세로로 400이라고 합시다.

 

이 델파이체 A자를 세로 사이즈를 10으로 해서 화면에 그립시다.

그러면 가로 크기는 얼마가 될까요?

 

400 : 10 = 300 : X

글꼴데이터 세로 : 화면에서 세로 = 글꼴데이터 가로 : 화면에서 가로

 

여기서 X 를 구하면 7.5가 되지요? (쭈압~ 왠 수학)

근디 화면은 비트맵구조기 땜시 7.5라는 것은 없고 반올림해서 8이 됩니다.

 

즉 세로가 10이면 가로는 8이되지요 다시 말해서 5대 4 비율이 됩니다.

 

그래서 원래의 글꼴 가로세로 비율보다 화면에서는 가로 비율이 더 커집니다.

그런데 인쇄를 하면 프린터는 해상도가 무지 높기땜시

세로크기를 10이 아니라 100 정도로 했다고 칩시다.

그러면 가로는 또 월마지요? 75가 되지요?

 

즉 인쇄에서는 글꼴의 가로세로 비율이

원래의 글꼴의 가로세로 비율과 가까와집니다.

 

그래서 화면에서는 한라인으로 안되서

다음라인으로 넘어가는 문장이 인쇄를 해보면

한라인으로 다 들어가는 경우가 생기지요...

 

그래서 미리보기가 필요합니다.

 

그리는건 TImage에 그리는것이 좋습니다.

 

스크롤은 아예 스크롤박스를 하나 올려 놓고

그 위에 TImgae를 올려놓고 쓰면 스크롤은 자동으로 되지요..

 

인쇄를 시작하고 매핑모드 설정하고 페이지를 넘기고

인쇄를 끝내는 부분만 빼고 실제로 그리는 부분은 별도의 함수로만듭니다.

 

물론 인자를TCanvas형으로 해서요 그래서 인쇄를 할때는

그 인자에 Pritner.Canvas를 넣고 미리보기를 할때는 Image1.Canvas를 넣어 줍니다.

 

그러면 그리는 루틴을 인쇄따로 미리보기따로 하지 않아요 됩니다.

 

그담에 미리보기를 시작합시다.

 

중요한건 Image의 가로,세로 크기입니다.

 

실제 인쇄가 될 용지의 가로세로크기를(사용영역이 아닌 용지크기)

픽셀단위로 얻어와서 그 크기 만큼 Image를 크기를 맞춥니다.

 

이 과정에서 엄청 버벅거립니다. 크니깐요

그래서 아래한글에서 미리보기하면 버벅거리쟎아요

버벅거리지 않는 미리보기는 모두 짜가 입니다.

 

(MS워드 빼고 요놈은 에디터가 특별해서리~)

그리고 매핑모드를 MM_ANISOTROPIC 또는 MM_ISOTROPIC으로 해서

가로 세로 비율을 실제 용지에서의 비율과 같게 맞춥니다.

 

그리고는 그려주면 되지요

 

728x90
반응형

'Delphi Tip > 출력' 카테고리의 다른 글

델파이 인쇄 출력 11편  (0) 2023.09.08
델파이 인쇄 출력 10편  (0) 2023.09.07
델파이 인쇄 출력 8편  (0) 2023.09.05
델파이 인쇄 출력 6편  (0) 2023.09.04
델파이 인쇄 출력 5편  (0) 2023.09.01

댓글