读书人

GDI+ 展示图像

发布时间: 2013-06-19 10:26:40 作者: rapoo

GDI+ 显示图像
本帖最后由 nickwang87 于 2013-05-13 13:29:10 编辑


Bitmap* pSrcBmp = (Bitmap*)lParam;
Graphics graphics(this->GetDC()->GetSafeHdc());
CRect rcWindow(0, 0, 0, 0);
m_ctlImgView.GetWindowRect(rcWindow);
ScreenToClient(rcWindow);
CPoint objPoint = rcWindow.TopLeft();
graphics.DrawImage(pSrcBmp, objPoint.x, objPoint.y);
delete pSrcBmp;



想把视频流,画到窗体上。

写到上面代码,测试发现,
进过一段时间,不在时时显示视频流图像,停留在一帧上。

为什么呢? 请各位指教。

DI GDI+ Bitmap 视频流
[解决办法]
播放视频流用DirectDraw绘制帧图像比较好。。。。。。GDI+不行。。。。用一个类封装DirectDraw播放视频,我以前都做过。。
[解决办法]

给你参考一个头文件


// DDrawobj.h: interface for the CDDrawObj class.
//
//////////////////////////////////////////////////////////////////////
#pragma once
#include <ddraw.h>

#define _CHARACTORBUILDER_
#defineSAFE_RELEASE(x) if(x != NULL){ x->Release(); x = NULL;}

// RAW display
class CDDrawObj
{
public:
CDDrawObj();
virtual ~CDDrawObj();

// 像素格式
typedef enum
{
VIDEO_MODE_UNKNOW,
VIDEO_MODE_4bppIndexed,
VIDEO_MODE_8bppIndexed,
VIDEO_MODE_16bppRGBB555,
VIDEO_MODE_16bppARGB1555,
VIDEO_MODE_16bppRGB565,
VIDEO_MODE_24bppRGB,
VIDEO_MODE_32bppRGB,

}PIXEL_FORMAT;

// // Access functions
HWND GetHWnd() { return m_hWnd; }
LPDIRECTDRAW7 GetDirectDraw() { return m_pDD; }
LPDIRECTDRAWSURFACE7 GetFrontBuffer() { return m_pddsFrontBuffer; }
LPDIRECTDRAWSURFACE7 GetBackBuffer() { return m_pddsBackBuffer; }
PIXEL_FORMAT GetPixelFormat()const { return m_PixelFormat; }

// Creation/destruction methods
HRESULT CreateWindowedDisplay(HWND hWnd, DWORD dwWidth, DWORD dwHeight);
void DestroyObjects();


// Display methods
void TestDraw(int x, int y);
BOOL DrawText(LPCTSTR pszText, DWORD dwOriginX, DWORD dwOriginY, HFONT hFont, COLORREF crForeground, COLORREF crBackground = -1);// Draw text to back buffer
BOOL Draw8bppIndexedFormMemBuf(BYTE *image, RECT *Rectdes = NULL);
HRESULT Clear(COLORREF crFillColor = RGB(0,0,0));

//
HRESULT Present();

//
private:
LPDIRECTDRAW7 m_pDD;// DirectDraw Obj


LPDIRECTDRAWSURFACE7 m_pddsFrontBuffer;//
LPDIRECTDRAWSURFACE7 m_pddsBackBuffer;//
LPDIRECTDRAWCLIPPER pcClipper;//

HWND m_hWnd;//Attach hwnd
PIXEL_FORMATm_PixelFormat;

};


读书人网 >VC/MFC

热点推荐