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
[39083] Re:주소가져오는법
방태윤 [nabty] 1711 읽음    2005-02-11 12:42
안녕하세요.? 

===>  scanline[0] 으로 사용할껀데 배열이 가진 첫번째 주소값을 어떻게 scanline에 넘겨 줄수 있을까요?

이 부분에서요 .. scanline 에 값을 넘겨줄수 없습니다.

TBitmap 의 ScanLine[] 은  help 를 보셔도 아시겠지만 읽어올수만 있도록 되어있습니다요.

그러므로 Cansvas->Pixels[][] 로 화면에 출력하시면 제일간단하고요.,,근데 그렇게 하면 무지 느리니까..
SetDIBitsToDevice를 이용해야 할겁니다.

LPBITMAPINFO bmpi=(LPBITMAPINFO)new byte[sizeof(BITMAPINFO)+256*sizeof(RGBQUAD)];
  ZeroMemory(bmpi, sizeof(BITMAPINFO));
  bmpi->bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
  bmpi->bmiHeader.biPlanes=1;
  bmpi->bmiHeader.biWidth=엑스 싸이즈
  bmpi->bmiHeader.biHeight=와이 싸이즈;
  bmpi->bmiHeader.biBitCount=8; //8,16,24  raw 데이터가 8 비트라고 했죠?
  bmpi->bmiHeader.biSizeImage=bmpi->bmiHeader.biWidth*bmpi->bmiHeader.biHeight
                              *bmpi->bmiHeader.biBitCount/8;
  if(bpp==1){ //bit per pixel 이 8인경우는 팔레트가 필요합니다.
    bmpi->bmiHeader.biClrUsed=256;
    bmpi->bmiHeader.biClrImportant=256;
    for(int i=0;i<256;i++){
      PALETTEENTRY p;
      GetPaletteEntries(a->Palette,i,1,&p);
      bmpi->bmiColors[i].rgbRed = p.peRed;
      bmpi->bmiColors[i].rgbBlue = p.peBlue;
      bmpi->bmiColors[i].rgbGreen = p.peGreen;
      bmpi->bmiColors[i].rgbReserved = p.peFlags;
    }
  }

  SetDIBitsToDevice(Canvas->Handle,
      200,200,bmpi->bmiHeader.biWidth,bmpi->bmiHeader.biHeight,
      0,0,0,bmpi->bmiHeader.biHeight,dest,bmpi,DIB_RGB_COLORS);

delete .......


여기 dest 가 raw 데이터(헤더를 제외한 그림 데이타)를 가르키는 포인터입니다.
SetDIBitsToDevice,raw ,BITMAPINFO 등으로 이곳 qa 에서 검색해보시면
raw 데이터 화면에 출력하는 방법 더 있을겁니다.찾아보시고요...
그럼.수고하세요.


좀해보자 님이 쓰신 글 :
: 이미지파일을 fopen........fread........하면 메모리상에 데이터가 들어가있는 곳을 배열로 찍고 있겠죠?
:
: (fread의 프로토타입을 보면 그렇게 되어 있는거 같던데...)
:
:  그 배열(일명 : ptr[i])라고 하고 scanline을 통해서 이미지를 뿌릴려고 하는데요
:
: ptr에는 일차원으로 값을 갖고 있는것처럼 보이니까 첫번째 주소값만 scanline에 넘겨주면 되는건가요?
:
: scanline[0] 으로 사용할껀데 배열이 가진 첫번째 주소값을 어떻게 scanline에 넘겨 줄수 있을까요?
:
:
: 즐거운 명절 되세요~~

+ -

관련 글 리스트
39076 주소가져오는법 좀해보자 1722 2005/02/07
39083     Re:주소가져오는법 방태윤 1711 2005/02/11
39086         Re:Re:주소가져오는법 좀해보자 1562 2005/02/11
39088             Re:Re:Re:주소가져오는법 방태윤 1905 2005/02/11
39077     Re:주소가져오는법 1843 2005/02/08
39080         Re:Re:주소가져오는법 좀해보자 1931 2005/02/10
39081             Re:Re:Re:주소가져오는법 1593 2005/02/10
39128                 Re:Re:Re:Re:주소가져오는법 좀해보자 1515 2005/02/16
39082                 Re:Re:Re:Re:주소가져오는법 좀해보자 1516 2005/02/11
39161                     Re:Re:Re:Re:Re:주소가져오는법 1783 2005/02/18
39091                     Re:Re:Re:Re:Re:주소가져오는법 1661 2005/02/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.