안녕하세요 강석인이라고 합니다.
아래의 소스는 프로그램을 실행시킨 후 실행돼 있는 프로그램의 창을 캡쳐시키는
소스입니다.
그런데 600DPI 프린트는 잘되는데 300DPI는 너무 크게 나와 문제가 있습니다.
해서 여러 전문가님들의 도움을 청자고자 이렇게 질문을 하게 됐습니다.
검토하신후 답변좀 부탁드립니다.
아차! 그리고 아래의 소스는 제가 워드로 친거라 오타가 있을수도 있습니다.
또 아래의 소스말고 다른방법이 있으면 도움좀 주세요 그럼 20000
procedure TfrmCLZ0009.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TfrmCLZ0009.ImageMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
if ssLeft in Shift then
begin
m_MaxVertPosition := Image.Height - ScrollBox.ClientHeight;
m_MaxHoriPosition := Image.Width - ScrollBox.ClientWidth;
ScrollBox.HorzScrollBar.Position := (m_MaxHoriPosition * X) div Image.Width;
ScrollBox.VertScrollBar.Position := (m_MaxVertPosition * X) div Image.Height;
end;
end;
procedure TfrmCLZS0009.PrintImage(f_han: HWND);
var
DC: HDC;
AspectRatio: Single;
OutputWidth, OutputHeight : Single;
begin
try
DC := GetDC(f_han);
Image.Top := 0;
Image.Left := 0;
Image.Width := 0;
Image.Height := 0;
BitBlt (Image.Canvas.Handle, 0, 0, Image.Width, Image.Height, DC, -4, -41, SRCCOPY);
ScrollBox.VertScrollBar.Position := 0;
ScrollBox.HorzScrollBar.Position := 0;
if Image.Width > ScrollBox.Widh then
Image.Left := 0
else Image.Left := (ScrollBox.Width - Image.Width) div 2;
if Image.Height > ScrollBox.Height then
Image.Top := 0
else Image.Top := (ScrollBox.Height - Image.Height) div 2;
ScrollBox.HorzScrollBar.Range := Image.Width;
ScrollBox.VertScrollBar.Range := Image.Height;
ScrollBox.VertScrollBar.Position := (Image.Height div 2) - (ScrollBox.Height div 2);
ScrollBox.HorzScrollBar.Position := (Image.Width div 2) - (ScrollBox.Width div 2);;
if not PrintDialog.Execute then Exit;
OutputWidth := Image.Picture.Width;
OutputHeight := Image.Picture.Height;
AspectRatio := OutputWidth / OutputHeight;
Printer.BeginDoc;
OutputHeight := 3200;
OutputWidth := OutputHeight * AspectRatio;
Printer.Canvas.StretchDraw(Rect (400,1500,
Trunc(OutputWidth), Trunc(OutputHeight)+1000),
Image.Picture.Graphic);
Printer.Canvas.StretchDraw(Rect(0,0,
Trunc(OutputWidth), Trunc(OutputHeight)),
Image.Picture.Graphic);}
Printer.EndDoc;
finally
ReleaseDC(f_han, DC);
end;
end;
end.