<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    DirectDraw 直接顯示RGB圖象的最簡單實現

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接   RFID設備管理軟件 來自:  
    #include "DDraw.h" 

    class CDDraw 

    public: 
    void CleanUp(); 
    void DrawDIB(BITMAPINFOHEADER* pBI,char* pData,RECT*rt); 
    BOOL Init(HWND hWnd,int nWidth,int nHeight); 
    CDDraw(); 
    virtual ~CDDraw(); 

    private: 
    HWND m_hDrawWnd; 
    LPDIRECTDRAW lpDD; // DirectDraw 對象 
    LPDIRECTDRAWSURFACE lpDDSPrimary; // DirectDraw 主頁面 
    LPDIRECTDRAWSURFACE lpBackdds; 
    LPDIRECTDRAWCLIPPER lpClipperBack; 
    }; 


    CDDraw::CDDraw() 

    lpDD=NULL; 
    lpDDSPrimary=NULL; 
    lpBackdds=NULL; 
    lpClipperBack=NULL; 


    CDDraw::~CDDraw() 

    if(lpDD!=NULL)CleanUp(); 


    BOOL CDDraw::Init(HWND hWnd,int nWidth,int nHeight) 

    if(hWnd==NULL) return FALSE; 

    m_hDrawWnd=hWnd; 

    if(DirectDrawCreate(NULL,&lpDD,NULL)!=DD_OK)return FALSE; 

    lpDD->SetCooperativeLevel(hWnd, DDSCL_NORMAL); 

    DDSURFACEDESC ddsd; 
    ddsd.dwSize = sizeof( ddsd ); //結構的大小 
    ddsd.dwFlags = DDSD_CAPS; //指定DDSURFACEDESC結構的ddsCaps成員為可用 
    ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE; //指定要創建的是主頁面 

    //創建主頁面對象 
    if ( lpDD->CreateSurface( &ddsd, &lpDDSPrimary, NULL ) != DD_OK) return FALSE; 

    if(lpDD->CreateClipper(NULL,&lpClipperBack,NULL)!=DD_OK) return FALSE; 

    lpClipperBack->SetHWnd(0,hWnd); 

    lpDDSPrimary->SetClipper(lpClipperBack); 

    lpClipperBack->Release(); 
    lpClipperBack=NULL; 

    ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH; 
    ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN; 
    ddsd.dwHeight = nHeight; 
    ddsd.dwWidth = nWidth; 
    if(lpDD->CreateSurface(&ddsd, &lpBackdds, NULL)!=DD_OK) return FALSE; 

    return TRUE; 


    void CDDraw::DrawDIB(BITMAPINFOHEADER *pBI, char *pData, RECT *rt) 

    RECT srt; 
    srt.left=0; 
    srt.top=0; 
    srt.right=pBI->biWidth; 
    srt.bottom=pBI->biHeight; 

    HDC hDC; 
    lpBackdds->GetDC(&hDC); 

    SetDIBitsToDevice( 
    hDC, 
    0, 
    0, 
    pBI->biWidth, // source rectangle width 
    pBI->biHeight, // source rectangle height 
    0, // x-coord of source lower-left corner 
    0, // y-coord of source lower-left corner 
    0, // first scan line in array 
    pBI->biHeight, // number of scan lines 
    pData, // array of DIB bits 
    (const struct tagBITMAPINFO*)pBI, // bitmap information 
    DIB_RGB_COLORS // RGB or palette indexes 
    ); 

    lpBackdds->ReleaseDC(hDC); 

    lpDDSPrimary->Blt(rt,lpBackdds,&srt,0,NULL); 


    void CDDraw::CleanUp() 
    {
    if(lpDD!=NULL) 

    if(lpClipperBack!=NULL) 

    lpClipperBack->Release(); 
    lpClipperBack=NULL; 


    if(lpDDSPrimary!=NULL) 

    lpDDSPrimary->Release(); 
    lpDDSPrimary=NULL; 


    if(lpBackdds!=NULL) 

    lpBackdds->Release(); 
    lpBackdds=NULL; 


    lpDD->Release(); 
    lpDD=NULL; 

    } (ixmy)   本站文章除注明轉載外,均為本站原創或編譯歡迎任何形式的轉載,但請務必注明出處,尊重他人勞動,同學習共成長。轉載請注明:文章轉載自:羅索實驗室 [http://www.rosoo.net/a/200903/7227.html]  RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全