델파이 인쇄 출력
미리보기 구현
미리 보기가 필요한가?
글꼴은 다들 아시다시피 트루타입방식을 사용합니다.(대부분...)
그런데 화면은 비트맵구조를 사용하게 되죠..
예를들어서 '델파이체'라는 글꼴이 있다치고
그 글꼴의 문자중 '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으로 해서
가로 세로 비율을 실제 용지에서의 비율과 같게 맞춥니다.
그리고는 그려주면 되지요
'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 |
댓글