Q&A

  • bitmap 출력에 대해서
비트맵 출력을 하려는데 감이 안오네요..
BltTBitmapAsDib프로시져를 불러오려는데 어떻게 해야 할지 감이 안오네요
BitBtn1Click부분에 BltTBitmapAsDib(DestDC ,0,0,320,240,bitmap);
의 각각의 파라미터를 어떻게 써야 할지 모르겠어요..
bitmap파라미터 부분을 어떻게 해야할지 bitmap으로 posconv를 할당해야 하잖아요 어떻게 해야하나요...
그리고 DestDC도 이렇게 하는게 맞는지 정말 처음 하는거라 감이 안잡히네요 고수님 많은 부탁드립니다.

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  preConv,postConv,TEmp : array[0..320*240*3-1] of byte        ;
  prefile,postFile : TFileStream;
   DestDC : hdc;
   FileHandle,iBytesRead : Integer;
   bitMap : TbitMap;
   i,j : Integer;
begin

    try
    prefile := TFileStream.Create('C:다운로드김수현RGBtestConv1.yvu',fmOpenReadWrite);
    prefile.Position :=0;
    prefile.Read(preConv,320*240*3);

    ConvertYV12ToRGB24(        @(preConv[0]), @(preConv[320*240]), @(preConv[320*240 + 320*60]), @postConv, 320, 240 );

    postFile := TFileStream.Create('C:다운로드김수현RGBtestConv1.rgb',fmOpenReadWrite);
    postFile.Position :=0;
    postFile.write(PostConv, 320*240*3);


    //bitMap.LoadFromFile(postFile);

    finally
    prefile.Free;
    postFile.free;
    end;
   // bitmap:= Canvas.;
    //BltTBitmapAsDib(DestDC ,0,0,320,240,bitmap);

end;
procedure TForm1.BltTBitmapAsDib(DestDC : hdc;{ handel of where blt}
                          x : word; {blt at x}
                          y : word; {blt at y}
                          Width : word; {width to stretch}
                          Height : word; {height to stretch}
                          bm : TbitMap); {the TBitmap to Blt}
var
OriginalWidth : longInt;                   {width of BM}
dc : hdc;                                  {screen dc}
IsDestPaletteDevice : bool;                {if the device uses palettes}
BitmapInFoSize : integer;                  {sizeof the bitmapinfoheader}
lPBitmapInFo : PBitmapInFo;                {the bitmap info header}
hBm : hBitmap;                             {handle to the bitmap}
hPal : hPalette;                           {handel to the palette}
OldPal : hPalette;                         {temp palette}
hBits : THandle;                           {handle to the DIB bits}
pBits : pointer;                           {pointer to the DIB bits}
lPPalEntriesArray : PPalEntriesArray;      {Palette entry array}
NumPalEntries : integer;                   {number of palette entries}
i : integer;                               {looping variable}

begin
//비트맵 원래의 너비를 저장해 둔다.
Originalwidth := 320;

//비트맵 원래의 너비를 저장해 둔다.
Bitmapinfosize := sizeof(Tbitmapinfo);
GetMem(lPBitmapInFo, BitmapInFoSize);

//비트맵의 구조를 할당한다.
FillChar(lpBitmapInFo^,BitmapInfosize, #0);

//Bitmapinfo  구조체에 필요한 데이터를 채워넣는다.
lpBitmapInfo^.bmiHeader.biSize := sizeof(TBitmapInfoHeader);
lpBitmapInfo^.bmiHeader.biWidth := OriginalWidth;
lpBitmapInfo^.bmiHeader.biHeight := 240;
lpBitmapInfo^.bmiHeader.biPlanes := 1;
lpBitmapInfo^.bmiHeader.biBitCount := 24;  //★요부분이 비트수를 결정하는거죠? 4로하면 16칼라로 되나요?★
lpBitmapInfo^.bmiHeader.biCompression := BI_RGB;
lpBitmapInfo^.bmiHeader.biSizeImage := ((lpBitmapInfo^.bmiHeader.biWidth *
    longint(lpBitmapInfo^.bmiHeader.biBitCount)) div 8) *
    lpBitmapInfo^.bmiHeader.biHeight;
lpBitmapInfo^.bmiHeader.biXPelsPerMeter := 0;
lpBitmapInfo^.bmiHeader.biYPelsPerMeter := 0;
lpBitmapInfo^.bmiHeader.biClrUsed := 0;
lpBitmapInfo^.bmiHeader.biClrImportant := 0;

hBm := bm.ReleaseHandle;
hPal := bm.ReleasePalette;

//스크린의 DC를 얻는다.
Dc := GetDc(0);

GetDiBits(dc, hBm, 0, lpBitmapInfo^.bmiHeader.biHeight, nil, TBitmapInfo(lpBitmapInfo^),DIB_RGB_COLORS);

//Bit를 위한 메모리 할당
hBits := GlobalAlloc(GMEM_MOVEABLE, lpBitmapInfo^.bmiHeader.biSizeImage);
pBits := GlobalLock(hBits);
GetDiBits(dc, hBm, 0, lpBitmapInfo^.bmiHeader.biHeight, pBits, BitmapInfo(lpBitmapInfo^),DIB_RGB_COLORS);
{Give back the screend dc}
dc := ReleaseDc(0, dc);
stretchDiBits(DestDc, x, y, width, height, 0, 0, OriginalWidth, lpBitmapInfo^.bmiHeader.biHeight,pBits,
lpBitmapInfo^,DIB_RGB_COLORS, SrcCopy);
GlobalUnLock(hBits);
GlobalFree(hBits);

FreeMem(lpBitmapInfo, BitmapInfoSize);
bm.Handle := hBm;
bm.Palette := hPal;
end;
0  COMMENTS
    • 김대훈
      2002.06.25 21:23
      SQL문에 오류가 있군요.. 상황은 모르지만 님게서 작성하신 SQL을 참고로 다시 작성해 보았습니다.. 그리...
    • 미소나눔
      2002.06.25 21:12
      두 테이블을 조인해서 특정 테이블의 특정 컬럼에 대한 Group by 랑 sum 를 해줄수 있습니다.  ...
    • 머슴
      2002.06.25 21:08
        with dm1.IBQimsi do       begin     ...
    • 김원섭
      2002.06.26 01:23
      ^^
    • 유현석
    • 2002.06.25 19:33
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김승호
      2002.06.26 01:28
      사용하고 계신 바코드 Scanner가 Keyboad 에 연결된 스캐너 같은데요. 스캐너 메뉴얼에 보시면 바코드를...
    • 박윤선
    • 2002.06.25 19:08
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 염상철
      2002.06.25 19:29
      자료를 저장하고 삭제 하고 할때는..쿼리 컴포 넌트가 더 나을듯 싶으네여... 그냥...edit를 세개를 밖으...
    • 박윤선
      2002.06.25 19:50
      디비그리드에서 한개만 입력하면 나머지 2개는 자동으로 입력되야 하거든요... 방법이 없을까요? 에디트 ...
    • 데빠이
      2002.06.25 20:09
      쿼리 컴포넌트를 사용할 경우에 쿼리컴포넌트의 BeforePost 이벤트에서 나머지 필드 값을 셋팅하면 될 겁...
    • 홍성락
      2002.06.25 19:39
      hsr////////////////////////////////////////////////////////////////// Memo 컴포넌트보다 RichEdit가 ...
    • 김승태
    • 2002.06.25 19:05
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박창범
      2002.06.25 20:38
      BitBlt(image1.Canvas.Handle ,0 ,0, 20, 20,         Image2...
    • 김형철
    • 2002.06.25 18:50
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 미소나눔
      2002.06.25 20:42
      uses 절에 StdCtrls 가 추가되어야 함다.... 확인해보세용.. 컴포넌트 동적생성은 객체의 유닛이 항상 ...
    • 김형철
      2002.06.25 22:59
      마찬가지입니다...user절에는 StrCtrls가 포함을 하였습니다. 그래도 처음과 같은 메세지가 나옵니다. E...
    • 최용일
      2002.06.26 00:47
      안녕하세요. 최용일입니다. implementation절 아래라... Self는 객체의 메소드 안에서만 사용하실 수 있...
    • 델파이사랑
      2002.06.26 01:52
      감사합니다........
    • 정대준
    • 2002.06.25 18:15
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 머슴
      2002.06.25 21:18
         디비 그리드에 있는 폼을 레포트 폼이 uses를 하면 됩니다...   Var  &...
    • 우소
      2002.06.25 18:24
      답변이 될지 모르겠는데.. 델파이 폴더에 보면 데모폴더에 퀵레포트로 출력하는 예제가 있는데.. 참고가 ...
    • 길병욱
    • 2002.06.25 08:06
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이성완
    • 2002.06.25 06:10
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이호성
    • 2002.06.25 06:03
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 호롱불
    • 2002.06.25 04:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 미소나눔
      2002.06.26 00:23
      구조체로 정형화된 문자열로 텍스트 파일에 저장시켜 놓으면 그걸 하나씩 불러와서 간단히 다시 데이타베이...
    • 깨비
      2002.06.26 23:47
      혹.. 본사에 있는 sql서버가 내부 아이피 내에 있거나.. 또는 네트워크 자체가 방화벽으로 둘러 쌓여 있는...
    • 깨구락지
      2002.06.25 17:30
      ODBC를 이용할수도, ADO를 이용할수도(ODBC를 거치는것 같습니다만), 소켓을 이용할수도 있는등 여러가지 ...
    • 최진술
    • 2002.06.25 03:52
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 단현석
      2002.06.25 18:11
      그럼요! 축구 열심히 응원하고 있습니다^^ 입력 작업 이 문제가 되는 것 같습니다. 어떤 DBMS 도 다중 ...
    • 깨구락지
      2002.06.25 17:26
      원래 다수의 사용을 전제로 만들어진것이므로(동시입력 포함) 전혀 걱정하실일이 아닙니다. 다만 유니크한 ...
    • 이현철
      2002.06.25 08:23
      제 생각엔, 동시의 사용자가 Client Program 을 이용해서 입력한다고 해도, 서버에서 에러없이 DB 에 입력...
    • 김원섭
      2002.06.25 04:14
      저두 그런 문제로 고민하구 있는뎅.. 전일단 임시 방편으루 insert한후에 커밋을 해줬거든요.. 저같...
    • 한정운
      2002.07.08 23:46
      저도 동일한 문제였는데, 여기 사이트 가보세염. 여기에서 제시한 Source를 사용해 보세요. 잘 되더군요....
    • 짱아
    • 2002.06.25 03:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 염상철
      2002.06.26 19:43
      인스톨을 잘못하신거 아닌가여`? 다시 한번 인스톨 해보세여..
    • 호야
    • 2002.06.25 03:17
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 미소나눔
      2002.06.25 04:34
      파일 삭제하는게 아이구.. 디렉토리를 조작할때 후킹하는 것입니다. win98 이면 ActiveX 등록하고 한...
    • 호야
      2002.06.26 00:24
      ^^;; 답변감사한데요.. 제가 여쭤보는게 그말이거든요... 제가쓰는건 윈2000 인데요... Run -&...
    • 호야
      2002.06.26 02:36
      혹시나해서 리부팅을 해봤습니다... 그리구 휴지통에 있는 파일을 지웠더니... 메세지가 나오더라구...
    • 이호성
    • 2002.06.25 02:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.06.25 03:00
      안녕하세요. 최용일입니다. dll에서 함수들을 외부로 export안 시켜논 것 같은데요. dll에서 export안 ...
    • 김도형
    • 2002.06.25 02:37
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 미소나눔
      2002.06.25 02:57
      with Query1 do begin    while not Eof do begin       Combo...
    • 이현철
      2002.06.25 02:44
      굳이 1개의 콤보박스에 데이타 열을 넣으시려면, (데이타 예) 1   홍길동 2   춘향...
    • 이현철
      2002.06.25 02:46
      이건 그냥 참고하시기 바랍니다 파일 전송/ ftp 구현에 관해서 많은 방법과, 여러가지 컴포넌트가 있겠...
    • 변선희
    • 2002.06.25 02:11
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정관
      2002.06.25 02:53
      어떤 컴포넌트를 쓰고 계신지는 모르겠지만... 저도 그런 경우가 있어서... TQuery컨포넌트의 DatabaseNa...
    • 이현철
      2002.06.25 02:47
      소스르 한번 올려주세요.. 내용만 보고는 잘 모르겠네요.