http://www.delphigroups.info/3/8/141931.html
위에 답변 참고 하면 이미지메모리를 globalalloc으로 할당 하면 해결 된다고 하네요.
참고로 테스트는 위의 소스로는 하지 않았고 StretchDIBits로 했는데 동일한 증상이 해결 되네요.
마이클플리 님이 쓰신 글 :
: 안녕하세요.
:
: 7일동안 해보다가 더이상 지체 하면 안될듯 해서 올려 봅니다.
: 간단한 8,24비트 비트맵 뷰어 인데요.
: 이상하게 화면에 출력이 됐다가 안됐다 합니다.
: 쉬는 시간에 심심풀이 삼아 한번 봐주십사 하고 올립니다.
: 보시면 랜덤 버튼을 만들어서 지정된 이미지폴더에서 랜덤으로 이미지를 로딩합니다.
:
: * D드라이브에 BC6Works폴더를 만들고 거기에 폴더를 푸시면 됩니다.
: * SaveInfo 버튼은 bin폴더에 비트맵인포해더를 저장하는 버튼입니다.
: * Load는 이미지로딩 , Save는 이미지 저장. Random은 BC6Works/ImageView/Image폴더에 있는 이미지 랜덤로딩
: * DP_CNT는 폼에서 OnPaint함수 수행 횟수 ,
: Line은 SetDIBitsToDevice의 리턴값 ,
: Pixel은 모든 픽셀의 밝기 합 ,
: B는 이미지 비트수 ,
: W는 넓이 ,
: H는 높이 ,
: Ret은 화면띄우는 함수 리턴값입니다.
:
: 해더도 나올때 안나올때 비교해봤구요... 이미지도 확인 했구요..
: DC도 혹시 이상할까봐 TImage로도 해봤는데 똑같네요.
: 화면 출력이 안되면 SetDIBitsToDevice의 리턴값이 0으로 들어 오는데요.
: SaveInfo 버튼을 이용해서 나올때 안나올때 상황에 SAVE를 하고 핵사값으로 파일을 열어서 봐도 똑같거든요....
: 혹시 제가 뭐를 빠트렸나요?
|