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
[43621] 이미지 출력에 관한 질문입니다.
경호 [ansoni19] 1094 읽음    2006-02-09 21:13
오래만에 질답 게시판에 글을 쓰게 되는군요 ^^;

일단 지금 제가 720*576데이터를 받아서 640*480뷰어에 동영상을 재생하고 있습니다.
그런데 문제가 발생을 했는데 화질상의 문제입니다.

비디오 모드가 인터레이스 모드이기 때문에 영상을 뿌릴때 디인터레이싱을 해주어야 하나
원사이즈 이미지를 그대로 디스플레이 하기 위해 디인터레이싱 부분을 막고 디스플래이 해본 결과...

참담한 현실에 부디치게 되었습니다.

영상에 움직임이 있을 경우 영상의 왜곡이 발생 하는것입니다.
일단 제가 테스트해본 결과 뷰어 사이즈가 이미지 사이즈랑 동일할때는 문제가 없는것으로 보아
StretchDIBits의 문제인것 같습니다.

간단하게 소스를 보여 드리면

// 함수 진입부
int nImageWidth = rcSrc.Width(); // 720
int nImageHeight = rcSrc.Height(); // 576
int nDstImageWidth = rcView.Width(); // 640
int nDstImageHeight = rcView.Height(); // 480

HRESULT hr;
HDC hdc;
HDC    hImagedc;
HBITMAP    hbm=NULL;
   
hr = m_lpDDSBack->GetDC(&hdc);
hbm=::CreateCompatibleBitmap(hdc,nDstImageWidth,nDstImageHeight);

SetStretchBltMode(hImagedc, COLORONCOLOR);
::StretchDIBits(hImagedc,0,0,
    nDstImageWidth,nDstImageHeight,
    0,0,
    nImageWidth,
    nImageHeight,
    parent->m_InputStream.m_pBufRGB[nCh], //이미지 버퍼 720*576
    (BITMAPINFO *)&m_biHeader,
    DIB_RGB_COLORS,
    SRCCOPY);

BitBlt(hdc,0,0,nDstImageWidth,nDstImageHeight,hImagedc,0,0,SRCCOPY);
의 형태로 되어 있습니다. 일단 내부적으로 보니 DIB쪽을 사용할때는 Height의 사이즈가 문제가 난다고 나오더군여

혹시 위의 문제 해결 방법이 없을까여 ?

+ -

관련 글 리스트
43621 이미지 출력에 관한 질문입니다. 경호 1094 2006/02/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.