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

C++빌더 Q&A
C++Builder Programming Q&A
[43559] Re:이미지 실제 싸이즈랑 print 출력 싸이즈 차이 계산 어떻게 해야 하나요?
ㅇㅇ [] 1563 읽음    2006-02-05 11:39
이윤성 님이 쓰신 글 :
: TRect R;
:
:         if(PrintDialog->Execute()){
:                 TPrinter *Ptr = Printer();
:                 R = Rect(0, 0, Image->Picture->Width , Image->Picture->Height );
:                 Ptr->BeginDoc();
:                 Ptr->Canvas->StretchDraw(R, Image->Picture->Graphic);
:                 Ptr->EndDoc();
:                 }
:
:  이렇게 출력을 하면 이미지가 상당히 작게 나오네요..
:  폼에서 보이는 이미지 랑..프린터기가 인식하는 거랑 차이가 상당히 많이 나는거 같은데..
:  어쩌면 당연한지도 모르겠네요..
:  이 걸 실제 싸이즈 랑 비슷하게 출력 할려면 어떻게 해야 할까요?
:  Print 에서 인식하는 A4 가로 세로 싸이즈가 얼마인가요?
:  대략 저 폭에 *7 정도로 하면....눈에 보이는 거랑 비슷한 싸이즈 인거 같은데..
:  그건 문제가 있고..
:  .
:         int XPI = GetDeviceCaps(Ptr->Handle,LOGPIXELSX);
:         int YPI = GetDeviceCaps(Ptr->Handle,LOGPIXELSY);
:   이렇게 해서 프린터의 출력의 가로 세로를 안다고 나오는거 같은데 이다음에..여기에 어떤수를 나누거나 하면 좀더 정확한 싸이즈를 구할수 있을지 조언 부탁 드립니다.
:
:
:  그리고 Ptr->NewPage(); 로 해서 여러장 인쇄시.. 프리터출력시 문서 범위에서..
:  한장 또는 전체 출력 옵션 선택할려면 어떻게 해야 하는지 잘안되네요..
:  여러장 해놓으면...옵션상에서 전체 출력만 가능하네요...


LOGPIXELSX    Number of pixels per logical inch along the screen width.
LOGPIXELSY    Number of pixels per logical inch along the screen height.

디바이스마다 DPI(Dot Per Inch)가 다를 수 있습니다.
다시말해, 디바이스마다 동일한 1인치에 찍는(찍을 수 있는) 점의 갯수가 다를 수 있습니다.
이것을 해당 장치의 해상도(RESolution)라 합니다.

보통, 프린터의 해상도가 모니터의 해상도 보다 훨씬 높습니다.
따라서, 모니터에서 크게 보이던 것이 그대로 인쇄하면 작게 출력되는 것입니다.
모니터에 보이는 크기만하게 인쇄하려면,
'프린터의 해상도 나누기 모니터의 해상도'의 비율만큼 확대해서 출력하면 됩니다.

BOOL StretchBlt(
    HDC hdcDest,    // handle of destination device context
    int nXOriginDest,    // x-coordinate of upper-left corner of dest. rect.
    int nYOriginDest,    // y-coordinate of upper-left corner of dest. rect.
    int nWidthDest,    // width of destination rectangle
    int nHeightDest,    // height of destination rectangle
    HDC hdcSrc,    // handle of source device context
    int nXOriginSrc,    // x-coordinate of upper-left corner of source rectangle
    int nYOriginSrc,    // y-coordinate of upper-left corner of source rectangle
    int nWidthSrc,    // width of source rectangle
    int nHeightSrc,    // height of source rectangle
    DWORD dwRop     // raster operation code
   );   

   nWidthDest를 nWidthSrc*(프린터해상도/모니터해상도)로 해줍니다.   
   nHeightDes도 마찬가지입니다.

+ -

관련 글 리스트
43506 이미지 실제 싸이즈랑 print 출력 싸이즈 차이 계산 어떻게 해야 하나요? 이윤성 1109 2006/02/01
43559     Re:이미지 실제 싸이즈랑 print 출력 싸이즈 차이 계산 어떻게 해야 하나요? ㅇㅇ 1563 2006/02/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.