void print_info(LPDIRECT3DSURFACE9 pSurface, int mode, float time, cv::String oclDevName) { HDC hDC; HRESULT r = pSurface->GetDC(&hDC); if (FAILED(r)) { return; } HFONT hFont = (HFONT)::GetStockObject(SYSTEM_FONT); HFONT hOldFont = (HFONT)::SelectObject(hDC, hFont); if (hOldFont) { TEXTMETRIC tm; ::GetTextMetrics(hDC, &tm); char buf[256]; int y = 0; buf[0] = 0; sprintf(buf, "mode: %s", m_modeStr[mode].c_str()); ::TextOut(hDC, 0, y, buf, (int)strlen(buf)); y += tm.tmHeight; buf[0] = 0; sprintf(buf, m_demo_processing ? "blur frame" : "copy frame"); ::TextOut(hDC, 0, y, buf, (int)strlen(buf)); y += tm.tmHeight; buf[0] = 0; sprintf(buf, "time: %4.1f msec", time); ::TextOut(hDC, 0, y, buf, (int)strlen(buf)); y += tm.tmHeight; buf[0] = 0; sprintf(buf, "OpenCL device: %s", oclDevName.c_str()); ::TextOut(hDC, 0, y, buf, (int)strlen(buf)); ::SelectObject(hDC, hOldFont); } r = pSurface->ReleaseDC(hDC); return; } // print_info()
COLORREF CAnimationSpooler::TranslateColor(LPDIRECT3DSURFACE9 pSurface, COLORREF clrColor) const { ASSERT(pSurface); if( clrColor == CLR_INVALID ) return clrColor; // The only way to actually determine what color a certain RGB value gets, is // to put a pixel on the surface and taste it. HDC hDC = NULL; HRESULT Hr = pSurface->GetDC(&hDC); if( FAILED(Hr) ) return false; COLORREF clrOld = ::GetPixel(hDC, 0, 0); ::SetPixel(hDC, 0, 0, clrColor); clrColor = ::GetPixel(hDC, 0,0); ::SetPixel(hDC, 0, 0, clrOld); pSurface->ReleaseDC(hDC); return clrColor; }
INT LcD3D_DrawTextBackbuffer(PDEV pDev, INT X, INT Y, LPCTSTR Text, DWORD _color) { HDC hDC=0; LPDIRECT3DSURFACE9 Surface; if(FAILED(pDev->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &Surface))) return -1; Surface->GetDC(&hDC); if(NULL != hDC) { SetBkMode(hDC, TRANSPARENT); SetTextColor(hDC, _color); TextOut(hDC, X, Y, Text, strlen(Text)); Surface->ReleaseDC(hDC); } Surface->Release(); //해제한다. return 0; }