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;
// 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;
};