DirectShow DirectShow 레퍼런스 DirectShow base class base class 레퍼런스 CDrawImage   [목차열람] [주소복사] [슬롯비우기]
CDrawImage 클래스
 
Microsoft DirectX 9.0

CDrawImage 클래스

CDrawImage 클래스는, 비디오 렌더러 필터의 드로잉(Drawing)를 관리하는 헬퍼-클래스이다. 모든 드로잉(Drawing) 조작을 GDI 를 사용해 실행한다. 이 클래스는 DirectDraw 에 의한 렌더링을 지원 하지 않는다. CDrawImage 클래스에서는, 비디오 윈도우를 관리하는 오너 필터도 CBaseWindow 클래스를 사용하고 있을 필요가 있다. CDrawImage 생성자은,CBaseWindow 개체의 포인터를 받는다.

다음 그림은 커스텀 비디오 렌더러 필터에 있어서의 이 클래스의 바람직한 사용 방법을 나타내고 있다.

CDrawImage (을)를 사용한 커스텀 비디오 렌더러 필터

이 클래스의 사용 방법은 다음대로.

할당자

위의 그림에 나타낸 필터는, 커스텀 할당자 클래스인 CImageAllocator 를 사용하고 있다. 이 할당자는, GDI 함수 CreateDIBSection 를 사용해 공유 메모리에 DIB 를 생성 한다. 이 할당자로 생성 한 샘플은 CImageSample 개체이다.

필터가 접속을 위한 할당자를 소유하고 있는 경우, 미디어 샘플은 확실히 CImageSample 개체이다. 그 경우,CDrawImage 개체는 BitBlt 또는 StretchBlt 를 사용해 드로잉(Drawing)를 최적화할 수 있다. 그 이외의 경우는, 저속의 SetDIBitsToDevice 또는 StretchDIBits 함수를 사용해야 한다. 고속 옵션은 CDrawImage::FastRender 메서드로 처리 해, 저속 옵션은 CDrawImage::SlowRender 메서드로 처리 한다. 이름은 Slow 이지만,SlowRender 에서도 (새로운 하드웨어에서는 특히) 큰 퍼포먼스에의 영향은 없다.

팔레트

드로잉(Drawing)에 FastRender 메서드를 사용해, 이미지가 팔레트화 되고 있는 경우, 필터는 다음과 같이 팔레트를 관리할 필요가 있다.

요건

헤더 : Winutil.h 로 선언해, Streams.h 를 인클루드 한다.

라이브러리 : Strmbase.lib (리테일 빌드) 또는 Strmbasd.lib (디버그 빌드).

프로텍트 멤버 변수 설명
m_bStretch 목적지 윈도우에 맞추어 비디오 이미지를 신축(스트레치) 할 필요가 있을지 어떨지를 나타낸다.
m_bUsingImageAllocator 핀 접속의 할당자가 CImageAllocator 개체일지 어떨지를 나타낸다.
m_EndSample 최신 샘플의 정지 타임을 지정한다.
m_hdc 소사용자 윈도우의 장치 문맥의 핸들.
m_MemoryDC 소사용자 윈도우의 메모리 장치 문맥의 핸들.
m_PaletteVersion 팔레트의 변화를 추적하기 위해서 사용한다.
m_pBaseWindow 소유하는 CBaseWindow 개체의 포인터.
m_pMediaType 현재의 미디어 타입의 포인터.
m_SourceRect 드로잉(Drawing)의 전송원직사각형을 지정한다.
m_StartSample 최신 샘플의 시작 타임을 지정한다.
m_TargetRect 드로잉(Drawing)의 목적지 직사각형을 지정한다.
프로텍트 메서드  
DisplaySampleTimes 비디오 이미지 위에 미디어 샘플의 타임 스탬프를 드로잉(Drawing) 한다.
FastRender BitBlt 또는 StretchBlt 함수를 사용해 비디오 이미지를 드로잉(Drawing) 한다.
SetStretchMode 비디오 이미지를 신축(스트레치) 할 필요가 있을지 어떨지를 계산한다.
SlowRender SetDIBitsToDevice 또는 StretchDIBits 함수를 사용해 비디오 이미지를 드로잉(Drawing) 한다.
UpdateColourTable 새로운 팔레트로 컬러 테이블을 갱신한다.
퍼블릭 메서드  
CDrawImage 생성자 메서드.
DrawImage 비디오 윈도우상에 비디오 프레임을 드로잉(Drawing) 한다.
DrawVideoImageHere 미디어 샘플로부터 지정한 장치 문맥에 이미지를 드로잉(Drawing) 한다.
GetPaletteVersion 팔레트의 버전을 얻어온다.
GetSourceRect 현재의 전송원직사각형을 얻어온다.
GetTargetRect 현재의 목적지 직사각형을 얻어온다.
IncrementPaletteVersion 팔레트의 버전을 인크리먼트(increment) 한다.
NotifyAllocator 접속의 할당자가 CImageAllocator 개체일지 어떨지를 CDrawImage 개체에 통지한다.
NotifyEndDraw 지원하지 않는다.
NotifyMediaType 현재의 미디어 타입을 개체에 통지한다.
NotifyStartDraw 지원하지 않는다.
ResetPaletteVersion 팔레트의 버전을 리셋 한다.
ScaleSourceRect 네이티브 비디오 사이즈와 미디어 타입 포맷에 상위가 있는 경우는, 지정한 전송원직사각형을 스케일링 한다. 가상.
SetDrawContext 드로잉(Drawing)에 사용되는 장치 문맥을 설정한다.
SetSourceRect 전송원직사각형을 설정한다.
SetTargetRect 목적지 직사각형을 설정한다.
UsingImageAllocator 현재의 할당자가 CImageAllocator 개체일지 어떨지를 나타낸다.

↑TOP