Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
화면캡쳐와PRINT
한수 부탁합니다.
델에서 폼을 캡쳐해서 프린터하는 방법좀 가르쳐주세요.
내공이 부족해서 제가 생각한데로 잘 되지가 않습니다.
많이 많이 부탁합니다.
2
COMMENTS
조복기
•
2000.03.08 20:53
델사랑 wrote:
> 한수 부탁합니다.
> 델에서 폼을 캡쳐해서 프린터하는 방법좀 가르쳐주세요.
> 내공이 부족해서 제가 생각한데로 잘 되지가 않습니다.
> 많이 많이 부탁합니다.
안녕하세요..
제가 가지고있는 팁중에 화면을 bmp로 저장하는 방법과
bmp를 출력하는 방법을 적어놓을께요..
참고로 김영대님이 예전에 답변했던 내용이군요..
좋은하루되세요..
1. [고급] 화면캡처하기
> 델파이 3.0에서
> 현재의 화면을 캡처하여 DB에 저장하려고 하는데
> 방법을 모르겠내요
안녕하세요 김영대입니다.
화면(DeskTop의 full screen)을 Capture하는 예제를 올립니다.
Capture하여 bmp 파일로 저장하는 예제입니다.
그리고 DB저장은 BLOB 필드를 다루는 내용이 많이 공개되어 있으니
생략합니다
그럼 좋은 결과 있기를 바랍니다.
(아래의 BitmapRect의 영역좌표를 바꾸면 DeskTop의 특정 영역만
Capture할 수 있습니다, full screen의 bmp 크기는 대략 938KB 입니다)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
SaveDialog1: TSaveDialog;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
DeskTopDC: HDc;
DeskTopCanvas: TCanvas;
BitmapRect: TRect;
Bitmap: TBitmap;
begin
try
Bitmap := TBitmap.Create; {BMP를 저장할 bitmap 생성}
BitMap.Width := Screen.Width;
BitMap.Height := Screen.Height;
BitmapRect := Rect(0, 0, Screen.Width, Screen.Height); {full screen 영역}
{전체 window의 device context(DC) 을 얻는다}
DeskTopDC := GetWindowDC(GetDeskTopWindow);
DeskTopCanvas := TCanvas.Create;
DeskTopCanvas.Handle := DeskTopDC; {전체 window의 canvas를 얻습니다}
// BitmapRect영역의 DeskTopCanvas에서 BitmapRect영역의 Bitmap.Canvas로
// 복사받습니다
Bitmap.Canvas.CopyRect(BitmapRect, DeskTopCanvas, BitmapRect);
if SaveDialog1.Execute then
Bitmap.SaveToFile(SaveDialog1.FileName);
finally
ReleaseDC(GetDeskTopWindow, DeskTopDC);
DeskTopCanvas.Free;
Bitmap.Free;
end;
end;
end.
2. bitmap 인쇄하기
// uses절에 Printers 를 포함하세요
procedure TForm1.Button1Click(Sender: TObject);
var
ScaleX, ScaleY: Integer;
R: TRect;
begin
Printer.BeginDoc;
with Printer do
try
ScaleX := GetDeviceCaps(Handle, logPixelsX) div PixelsPerInch;
ScaleY := GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch;
R := Rect(0, 0, Image1.Picture.Width * ScaleX, Image1.Picture.Height * ScaleY);
Canvas.StretchDraw(R, Image1.Picture.Graphic);
finally
EndDoc;
end;
end;
0
0
삭제
수정
댓글
델사랑
•
2000.03.09 01:43
조복기 wrote:
> 델사랑 wrote:
> > 한수 부탁합니다.
> > 델에서 폼을 캡쳐해서 프린터하는 방법좀 가르쳐주세요.
> > 내공이 부족해서 제가 생각한데로 잘 되지가 않습니다.
> > 많이 많이 부탁합니다.
>
> 안녕하세요..
> 제가 가지고있는 팁중에 화면을 bmp로 저장하는 방법과
> bmp를 출력하는 방법을 적어놓을께요..
> 참고로 김영대님이 예전에 답변했던 내용이군요..
> 좋은하루되세요..
>
>
>
> 1. [고급] 화면캡처하기
>
>
> > 델파이 3.0에서
> > 현재의 화면을 캡처하여 DB에 저장하려고 하는데
> > 방법을 모르겠내요
>
> 안녕하세요 김영대입니다.
> 화면(DeskTop의 full screen)을 Capture하는 예제를 올립니다.
> Capture하여 bmp 파일로 저장하는 예제입니다.
> 그리고 DB저장은 BLOB 필드를 다루는 내용이 많이 공개되어 있으니
> 생략합니다
> 그럼 좋은 결과 있기를 바랍니다.
> (아래의 BitmapRect의 영역좌표를 바꾸면 DeskTop의 특정 영역만
> Capture할 수 있습니다, full screen의 bmp 크기는 대략 938KB 입니다)
>
>
> unit Unit1;
>
> interface
>
> uses
> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
> StdCtrls;
>
> type
> TForm1 = class(TForm)
> Button1: TButton;
> SaveDialog1: TSaveDialog;
> procedure Button1Click(Sender: TObject);
> private
> { Private declarations }
> public
> { Public declarations }
> end;
>
> var
> Form1: TForm1;
>
> implementation
> {$R *.DFM}
>
> procedure TForm1.Button1Click(Sender: TObject);
> var
> DeskTopDC: HDc;
> DeskTopCanvas: TCanvas;
> BitmapRect: TRect;
> Bitmap: TBitmap;
> begin
> try
> Bitmap := TBitmap.Create; {BMP를 저장할 bitmap 생성}
> BitMap.Width := Screen.Width;
> BitMap.Height := Screen.Height;
> BitmapRect := Rect(0, 0, Screen.Width, Screen.Height); {full screen 영역}
>
> {전체 window의 device context(DC) 을 얻는다}
> DeskTopDC := GetWindowDC(GetDeskTopWindow);
> DeskTopCanvas := TCanvas.Create;
> DeskTopCanvas.Handle := DeskTopDC; {전체 window의 canvas를 얻습니다}
>
> // BitmapRect영역의 DeskTopCanvas에서 BitmapRect영역의 Bitmap.Canvas로
> // 복사받습니다
> Bitmap.Canvas.CopyRect(BitmapRect, DeskTopCanvas, BitmapRect);
>
> if SaveDialog1.Execute then
> Bitmap.SaveToFile(SaveDialog1.FileName);
> finally
> ReleaseDC(GetDeskTopWindow, DeskTopDC);
> DeskTopCanvas.Free;
> Bitmap.Free;
> end;
> end;
>
> end.
>
>
>
>
> 2. bitmap 인쇄하기
>
>
>
>
> // uses절에 Printers 를 포함하세요
>
> procedure TForm1.Button1Click(Sender: TObject);
> var
> ScaleX, ScaleY: Integer;
> R: TRect;
> begin
> Printer.BeginDoc;
> with Printer do
> try
> ScaleX := GetDeviceCaps(Handle, logPixelsX) div PixelsPerInch;
> ScaleY := GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch;
> R := Rect(0, 0, Image1.Picture.Width * ScaleX, Image1.Picture.Height * ScaleY);
> Canvas.StretchDraw(R, Image1.Picture.Graphic);
> finally
> EndDoc;
> end;
> end;
>
우선 이렇게 내공을 불어 넣어주셨어 감사합니다.
그런데 제가 이와 비슷한 방법으로 해 보았는데 인쇄 할때 모니터 크기에
따라 폼의 크기가 달라지는듯 합니다.
그리고 프린트도 해상도도 영~~~
그래서 다시 내공을 부탁합니다.
혹시 다른 방법이 없나요?
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
문영봉
•
2000.03.08 23:52
3
COMMENTS
/
0
LIKES
rxcalcedit를 써서 날짜 입력시요..
문영봉
•
2000.03.09 19:13
문영봉 wrote: > 제가 ms-sql을 db로 사용하고요... Tdatasource를 써서 직접 연결을 하여 사용하고 > 있...
문영봉
•
2000.03.09 19:12
문영봉 wrote: > 제가 ms-sql을 db로 사용하고요... Tdatasource를 써서 직접 연결을 하여 사용하고 > 있...
문영봉
•
2000.03.09 19:12
문영봉 wrote: > 제가 ms-sql을 db로 사용하고요... Tdatasource를 써서 직접 연결을 하여 사용하고 > 있...
김형달
2000.03.08 23:41
0
COMMENTS
/
0
LIKES
DbGrid에서 엔터키로 선택하는것...
topsman
2000.03.08 23:18
0
COMMENTS
/
0
LIKES
퀵리포트에서 Canvas를 사용할때...
혜진이
2000.03.08 23:10
0
COMMENTS
/
0
LIKES
서버소켓을 쓰레드로 생성(?)할려면 어떡하나요?
모양
2000.03.08 22:52
0
COMMENTS
/
0
LIKES
이상하게 제가 올린 글이 안열리네요.
모양
•
2000.03.08 22:29
3
COMMENTS
/
0
LIKES
델파이 5에서 짠 폼을 델파이 4에서 볼수 있는 방법은?
최용일
•
2000.03.08 22:53
얼마든지 낮은 버전에서 높은 버전의 폼을 열수 있습니다. 같은 버전에서도 안 열리 는 폼들이 있죠... ...
모양
•
2000.03.09 00:54
최용일 wrote: > 얼마든지 낮은 버전에서 높은 버전의 폼을 열수 있습니다. 같은 버전에서도 안 열리 > ...
최용일
•
2000.03.09 02:45
델파이 Bin디렉토리에 보시면 아마도 Convert.exe프로그램이 있습니다. 이걸 이용하시면 버전에 맞게 바꾸...
김하나
•
2000.03.08 22:28
2
COMMENTS
/
0
LIKES
TQuery 를 이용해서 select 한 결과를 DBGrid에 넣고 싶어요..
류동균
•
2000.03.09 08:00
김하나 wrote: > with AiriForm.AiriSQL do begin > try > Close; > SQL.Clear; ...
김하나
•
2000.03.10 23:22
류동균 wrote: > 김하나 wrote: > > with AiriForm.AiriSQL do begin > > try > > Clos...
차은숙
•
2000.03.08 21:49
6
COMMENTS
/
0
LIKES
[Query질문)ParamByName이 안되는 경우...
좋은날
•
2000.03.08 23:36
차은숙 wrote: > 델파이 초보거든요. > DB에서 Select를 하는데, > 저희 Convention에 의해 > sql문에 ...
혀노
•
2000.03.08 23:31
> Query1.Sql.Add('Where UserId = :UserID'); > > ParamByName('MUserID').AsString := MUserID.Te...
진짜초보
•
2000.03.08 21:53
혹시나 해서 써보는건데요.. ParamByName('MUserID').AsString := MUserID.Text; 를 Params.ParamBy...
차은숙
•
2000.03.08 23:17
아니요... ParamByName('MUserID').AsString := MUserID.Text; 라고 썼는데요. Params.ParamBy...
진짜초보
•
2000.03.09 16:15
차은숙 wrote: > 아니요... > ParamByName('MUserID').AsString := MUserID.Text; > 라고 썼는데...
진짜초보
•
2000.03.09 16:15
차은숙 wrote: > 아니요... > ParamByName('MUserID').AsString := MUserID.Text; > 라고 썼는데...
진짜초보
2000.03.08 21:47
0
COMMENTS
/
0
LIKES
ODBC 와 BDE 그리고 가능하면 ADO 까지
철이
•
2000.03.08 21:41
1
COMMENTS
/
0
LIKES
버튼을 눌렀을때.......
최용일
•
2000.03.08 22:44
procedure Form1.Button1Click(Sender: TObject); begin Button2.OnClick; MenuItem1.OnClick; ....
민광호
2000.03.08 21:09
0
COMMENTS
/
0
LIKES
WAV 재생중 EVENT 처리에 관하여
최재원
2000.03.08 21:07
0
COMMENTS
/
0
LIKES
update pack과 Quick Report에 대한 patch...?
cho
•
2000.03.10 03:52
2
COMMENTS
/
0
LIKES
ISAPI/NSAPI 로 DLL를 작성했는 데....
김남일
•
2000.03.15 21:43
안녕하세요. 음. 혹시 Record위치를 조정하지 않았나요? Action에서 Table를 Scan 후(eof 까지) Table ...
화랑
•
2000.03.10 18:35
안녕하세요.. 저도 델파이로 웹 프로그래밍을 다 하고 있는데요.. 저는 그런 에러가 전혀 없었거든요? ...
황선희
•
2000.03.08 20:51
1
COMMENTS
/
0
LIKES
[Fetal Error] Internal error : L721
이복만
•
2010.02.05 04:16
저의 경우 변수를 중복 사용하여 발생했었습니다 예를 들어 SpeedButton 3개가 있는데 각각의 버튼 이...
델사랑
•
•
2000.03.08 20:42
2
COMMENTS
/
1
LIKES
화면캡쳐와PRINT
한수 부탁합니다. 델에서 폼을 캡쳐해서 프린터하는 방법좀 가르쳐주세요. 내공이 부족해서 제가 생각한데로 잘 되지가 않습니다. 많이 많이 부탁합니다.
조복기
•
2000.03.08 20:53
델사랑 wrote: > 한수 부탁합니다. > 델에서 폼을 캡쳐해서 프린터하는 방법좀 가르쳐주세요. > 내공이 ...
델사랑
•
2000.03.09 01:43
조복기 wrote: > 델사랑 wrote: > > 한수 부탁합니다. > > 델에서 폼을 캡쳐해서 프린터하는 방법좀 가...
이재호
2000.03.08 20:26
0
COMMENTS
/
0
LIKES
Query Stmt Delimiter String변경
최은석
2000.03.08 20:26
0
COMMENTS
/
0
LIKES
엑셀 셀의 너비조정....가능한가요?
델초
•
2000.03.08 19:23
3
COMMENTS
/
0
LIKES
오라클에서요..??ㅠ.ㅠ
김지희
•
2000.03.08 22:08
dictionary정보를 참조하시면 되겠네여. USER_CONSTRAINTS와 USER_CONS_COLUMNS 를 보시면... 델초...
델초
•
2000.03.08 22:52
감사합니다만 Select문에서 어떻게 사용해야 할 지 몰라서요..
김지희
•
2000.03.08 23:50
select C.table_name, C.constraint_name, C.constraint_type, CC.column_name ...원하는 필드명...
이태호
•
2000.03.08 19:08
2
COMMENTS
/
0
LIKES
함수에서 const값은 어떻게 넘겨요!
최용일
•
2000.03.08 20:01
아래와 같이 버퍼를 열린배열로 하고 SetLength를 이용하여 크기를 설정하여주시면 됩니다. procedure Ca...
이태호
•
2000.03.10 07:17
최용일 wrote: > 아래와 같이 버퍼를 열린배열로 하고 SetLength를 이용하여 크기를 > 설정하여주시면 됩...
안장식
2000.03.08 19:06
0
COMMENTS
/
0
LIKES
네트워크상에 데이타베이스가 설치된 서버 알아내기
델사랑
2000/03/08 20:42
Views
270
Likes
1
Comments
2
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> 한수 부탁합니다.
> 델에서 폼을 캡쳐해서 프린터하는 방법좀 가르쳐주세요.
> 내공이 부족해서 제가 생각한데로 잘 되지가 않습니다.
> 많이 많이 부탁합니다.
안녕하세요..
제가 가지고있는 팁중에 화면을 bmp로 저장하는 방법과
bmp를 출력하는 방법을 적어놓을께요..
참고로 김영대님이 예전에 답변했던 내용이군요..
좋은하루되세요..
1. [고급] 화면캡처하기
> 델파이 3.0에서
> 현재의 화면을 캡처하여 DB에 저장하려고 하는데
> 방법을 모르겠내요
안녕하세요 김영대입니다.
화면(DeskTop의 full screen)을 Capture하는 예제를 올립니다.
Capture하여 bmp 파일로 저장하는 예제입니다.
그리고 DB저장은 BLOB 필드를 다루는 내용이 많이 공개되어 있으니
생략합니다
그럼 좋은 결과 있기를 바랍니다.
(아래의 BitmapRect의 영역좌표를 바꾸면 DeskTop의 특정 영역만
Capture할 수 있습니다, full screen의 bmp 크기는 대략 938KB 입니다)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
SaveDialog1: TSaveDialog;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
DeskTopDC: HDc;
DeskTopCanvas: TCanvas;
BitmapRect: TRect;
Bitmap: TBitmap;
begin
try
Bitmap := TBitmap.Create; {BMP를 저장할 bitmap 생성}
BitMap.Width := Screen.Width;
BitMap.Height := Screen.Height;
BitmapRect := Rect(0, 0, Screen.Width, Screen.Height); {full screen 영역}
{전체 window의 device context(DC) 을 얻는다}
DeskTopDC := GetWindowDC(GetDeskTopWindow);
DeskTopCanvas := TCanvas.Create;
DeskTopCanvas.Handle := DeskTopDC; {전체 window의 canvas를 얻습니다}
// BitmapRect영역의 DeskTopCanvas에서 BitmapRect영역의 Bitmap.Canvas로
// 복사받습니다
Bitmap.Canvas.CopyRect(BitmapRect, DeskTopCanvas, BitmapRect);
if SaveDialog1.Execute then
Bitmap.SaveToFile(SaveDialog1.FileName);
finally
ReleaseDC(GetDeskTopWindow, DeskTopDC);
DeskTopCanvas.Free;
Bitmap.Free;
end;
end;
end.
2. bitmap 인쇄하기
// uses절에 Printers 를 포함하세요
procedure TForm1.Button1Click(Sender: TObject);
var
ScaleX, ScaleY: Integer;
R: TRect;
begin
Printer.BeginDoc;
with Printer do
try
ScaleX := GetDeviceCaps(Handle, logPixelsX) div PixelsPerInch;
ScaleY := GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch;
R := Rect(0, 0, Image1.Picture.Width * ScaleX, Image1.Picture.Height * ScaleY);
Canvas.StretchDraw(R, Image1.Picture.Graphic);
finally
EndDoc;
end;
end;