::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2003-03-07 10:31:00, Hit : 3576, Vote : 1010
 주어진 영역의 화면 캡처

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ExtCtrls;

type
TForm1 = class(TForm)
   Image1: TImage;
   BitBtn1: TBitBtn;
   procedure BitBtn1Click(Sender: TObject);
private
   { Private declarations }
public
   { Public declarations }
end;

var
Form1: TForm1;

implementation
{$R *.DFM}

procedure ScreenShot(x : integer;
                    y : integer;
                    Width : integer;
                    Height : integer;
                    bm : TBitMap);
var
dc: HDC;
lpPal: PLOGPALETTE;
begin
if ((Width = 0) or
     (Height = 0)) then
begin
   exit;
end;
bm.Width := Width;
bm.Height := Height;

dc := GetDc(0);
if (dc = 0) then
begin
   exit;
end;

if (GetDeviceCaps(dc, RASTERCAPS) and
     RC_PALETTE = RC_PALETTE) then
begin
   GetMem(lpPal,
          sizeof(TLOGPALETTE) +
          (255 * sizeof(TPALETTEENTRY)));

   FillChar(lpPal^,
            sizeof(TLOGPALETTE) +
            (255 * sizeof(TPALETTEENTRY)),
            #0);

   lpPal^.palVersion := $300;

   lpPal^.palNumEntries :=
     GetSystemPaletteEntries(dc,
                             0,
                             256,
                             lpPal^.palPalEntry);
   if (lpPal^.PalNumEntries <> 0) then
   begin
     bm.Palette := CreatePalette(lpPal^);
   end;
   FreeMem(lpPal, sizeof(TLOGPALETTE) +
           (255 * sizeof(TPALETTEENTRY)));
end;

BitBlt(bm.Canvas.Handle,
        0,
        0,
        Width,
        Height,
        Dc,
        x,
        y,
        SRCCOPY);

ReleaseDc(0, dc);
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ScreenShot(0,
            0,
            150,
            100,
            Image1.Picture.Bitmap);
end;

end.





491   [일반/컴포넌트] TRichEdit 의 선택된 영역만 인쇄하기  김영대 2003/03/07 4514 736
490   [시스템] CPU 종류 구하기  김영대 2003/03/07 4832 1206
489   [시스템] 사운드파일 없이 PC 스피커로 음악연주  김영대 2003/03/07 4683 926
488   [네트웍/인터넷] 프로그램으로 네트워크 드라이브 연결/해제  김영대 2003/03/07 6780 1257
487   [일반/컴포넌트] 윈도우즈 종료와 같은 그늘진 화면 만들기  김영대 2003/03/07 3166 843
486   [일반/컴포넌트] 아이콘 사이트  김영대 2003/03/07 3639 1079
485   [시스템] 윈도우즈 시스템 표준 폰트 구하기  김영대 2003/03/07 3033 853
484   [네트웍/인터넷] RS232 통신  김영대 2003/03/07 6974 1856
  [일반/컴포넌트] 주어진 영역의 화면 캡처  김영대 2003/03/07 3576 1010
482   [일반/컴포넌트] 숫자를 영문 표기로 바꾸기  김영대 2003/03/07 4265 898
481   [일반/컴포넌트] 숫자를 한글 표기로 바꾸기  김영대 2003/03/07 3635 934
480   [일반/컴포넌트] RichEdit 의 내용을 Bitmap 으로 만들기 2  김영대 2003/03/07 3819 990
479   [COM/OLE] MS-WORD 종료시키기  김영대 2003/03/07 2683 753
478   [윈도우즈 API] 시스템 사운드 연주하기  김영대 2003/03/07 4826 1307
477   [일반/컴포넌트] Algorithm to sort a TStringGrid #2  김영대 2003/03/07 4799 1208
476   [윈도우즈 API] 외부 프로그램의 좌표,상태 구하기  김영대 2003/03/07 3181 1017
475   [윈도우즈 API] 윈도우즈 Telnet 으로 호스트 접속하기  김영대 2003/03/07 4079 1117
474   [일반/컴포넌트] 특정한 폴더로 이동한 DOS 창 띄우기  김영대 2003/03/07 4125 1135
473   [시스템] DOS 명령어 실행하고 결과 받아오기  김영대 2003/03/07 6560 1549
472   [윈도우즈 API] NT의 현재 user가 administrative privilege 를 가지고 있는지?  김영대 2003/03/07 3009 816
471   [일반/컴포넌트] 두개의 StringGrid sync 마추기  김영대 2003/03/07 3715 1017
470   [일반/컴포넌트] 윈도우의 title bar 폰트 바꾸기  김영대 2003/03/07 3255 850
469   [네트웍/인터넷] 네트워크 공유 설정/해제 하기 (Windows 9x)  김영대 2003/03/07 4414 1081
468   [네트웍/인터넷] 네트워크 공유 정보 읽어오기 (WIndows 9x)  김영대 2003/03/07 3671 1006
467   [일반/컴포넌트] 눌려진 키보드 키의 명칭 구하기  김영대 2003/03/07 7399 1441
466   [윈도우즈 API] Windows98 에서의 SetForegroundWindow  김영대 2003/03/07 5765 1494
465   [윈도우즈 API] Task bar 에 나타나지 않는 프로그램 만들기  김영대 2003/03/07 5179 1513
464   [COM/OLE] Outlook 사용하기  김영대 2003/03/07 3488 1096
463   [시스템] 지정한 drive가 CD-ROM 인지 검사하기  김영대 2003/03/07 6317 1652
462   [시스템] 어떤 어플리케이션이 시작 되는지 hook으로 알아내기  김영대 2003/03/07 5175 1543
461   [윈도우즈 API] 윈도우즈 탐색기의 아이콘 뽑아내서 사용하기  김영대 2003/03/07 8051 1889
460   [윈도우즈 API] System Images  김영대 2003/03/07 7919 1832
459   [윈도우즈 API] 컴퓨터/파일/폴더 찾기 화면 띄우기  김영대 2003/03/07 7787 1483
458   [일반/컴포넌트] Unix-format time 을 TDateTime 로 바꾸기  김영대 2003/03/07 4109 1123
457   [일반/컴포넌트] 실행시 component 를 Move/Resize 시키기  김영대 2003/03/07 3328 959
456   [일반/컴포넌트] TMemo 를 화면크기로 인쇄하기  김영대 2003/03/07 2792 699
455   [일반/컴포넌트] SpeedButton 에 OnMouseEnter/OnMouseExit 이벤트 넣기  김영대 2003/03/07 3974 1042
454   [윈도우즈 API] 키보드의 Scroll Lock 켜기/끄기  김영대 2003/03/07 4194 1135
453   [데이터베이스] table packing 하기  김영대 2003/03/07 3507 1006
452   [윈도우즈 API] reboot Windows  김영대 2003/03/07 3901 1124

[이전 10개] [1]..[11][12] 13 [14][15][16][17][18][19][20]..[25] [다음 10개]
 

Copyright 1999-2022 Zeroboard / skin by zero