C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[7305] TBitmap 라이브러리의 문제점 발견
김시환 [godson2] 843 읽음    2003-06-10 20:59

TBitmap  매우 유용하며 강력하게 사용되는 라이브러리인데 이번에 이놈땜에 무지 애
먹었습니다.

아직까지 이 라이브러리 문제인지 시스템 문제인지 아니면 OS 문제인지는 발견 되지는
않았지만 혹시 다른분들도 이런 경우가 생길 수 있을지 몰라 글을 올립니다.

내용인 즉 이렇습니다.

이 놈이 일반 비트맵이나 JPEG를 직접 불러올때는 문제가 없습니다.
다만 RAW 데이타를 화일로 읽어서 이것을 PIXERS에 직접 매핑할 때 문제가 생깁니다.


예를 들어

word image_data[100] ;
int cnt = 0 ;

Load_Image("image.raw",image_data) ;

Graphics::TBitmap* Mbmp ;
Mbmp = new Graphics::TBitmap ;

for(int row=0 ; row < 10 ; row++)
  for(int col = 0 ; col < 10 ; col++)
{
   Mbmp->Canvas->Pixels[col][row] = (TColor)image_data[cnt++] ; 
}


위와 같은 코드가 있을 경우 Mbmp 에 들어가는 데이타 값이 PC 에 따라
다르게 들어 갑니다.

저같은 20대의 노트북에서 2 부류로 나누어서 한 부류는 정확히 들어가고 한 부류는 엉뚱한 값이
즉 변형된 값이 들어 갔습니다.

엉뚱한 값들도 나름대로 다 공통적으로 똑같이 들어갑니다. 참으로 어이가 없더군요...

한대의 PC에서 컴파일한 실행화일이 20대의 컴퓨터에서 2가지의 경우를 출력하고 있었으니...

꼭이런식의 값이었습니다.  한 픽셀만 예를 든다면

0x00383020  -> 이것이 정확한 값이라면 한 부류는 이값이 정확하게 들어가는데
0x00393021  -> 한 부류는 이렇게 값이 변형되어 들어 값니다.

물론 들어가지 전에 변형되는 것이 아니라 들어가면서 변형 됩니다.

정말 당황스러웠습니다. 혹시나 이런 경우가 생기실것 같아 제 경험을 올립니다.

우리 부장님 왈  " 10년에 한번 나올까 말까 하는 경우" 라나 ...


김상구.패패루 [peperu]   2003-06-10 21:36 X
느낌엔.. 혹시 픽셀포멧설정이 잘못 되었거나 할 것 같은데요..
김상구.패패루 [peperu]   2003-06-10 21:37 X
그리고 위와 같은 작업을 Pixel을 쓰신 것도 좀 납득이 안가구요. 당연히 저런건 ScanLine을
김상구.패패루 [peperu]   2003-06-10 21:37 X
쓰기 마련인데.. 뭐, 예제로 보여주시려고 그런거일 수도 있겠군요.
김상구.패패루 [peperu]   2003-06-10 21:38 X
참고로, Pixel은 프라퍼티이기 땜시 값이 대입될 때 변화할 수 있습니다. Set메쏘드가 동작하니까요.
김상구.패패루 [peperu]   2003-06-10 21:39 X
내부에서 무슨 일이 벌어지는지 잘 모르겠지만 확실하게 1:1 대입을 강제하려면 ScanLine쓰셔야 합니다.

+ -

관련 글 리스트
7305 TBitmap 라이브러리의 문제점 발견 김시환 843 2003/06/10
7307     Re:TBitmap 라이브러리의 문제점 발견 김시환 803 2003/06/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.