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
[39086] Re:Re:주소가져오는법
좀해보자 [] 1562 읽음    2005-02-11 15:36
방태윤님 답변 감사합니다.
훗~ 상당히 어렵게 느껴지네요 ㅜ.,ㅜ;
scanline에 대해 제가 잘못 알고 있었던거 같습니다.
전 scanline이 포인터 형을 가지면 쓰기가 되는줄 알고 있었거든요
님이 써주신 코드를 완전 이해 못하겠어요 ^^;
사실 비트맵 파일을 여는게 아니라 다른 파일을 여는거라 ^^;
제가 열고자 하는 포멧의 형식은 대강 알고 있구요
(헤더파일이랑 대략의 정보는 빼낼수 있습니다.)
scanline이 읽기에 사용된다면 데이터의 위치를 알고 있는 ptr[](타입 : unsigned char**)을 읽게 할수는 없나요?
즉, 첫번째 주소만 읽게 해서 정보를 가져오게 하는거요~



방태윤 님이 쓰신 글 :
: 안녕하세요.? 
:
: ===>  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 주소가져오는법 좀해보자 1723 2005/02/07
39083     Re:주소가져오는법 방태윤 1712 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.