我正在使用以下代码对网络摄像头的框架进行签名:

Font = CreateFont(18, 0, 0, 0, FW_BOLD, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, VARIABLE_PITCH, "times");

...

HDC hDC = CreateCompatibleDC(NULL);
unsigned char * img = 0;
HBITMAP hBitmap = CreateDIBSection(hDC, &BMI, DIB_RGB_COLORS, (void**)&img, NULL, 0);
memcpy(img, CameraFrame.data, CameraFrame.size());
free(CameraFrame.data);
CameraFrame.data = img;
SelectObject(hDC, hBitmap);
SelectObject(hDC, Font);
SetBkMode(hDC, TRANSPARENT);
SetTextColor(hDC, RGB(255,255,255));
string Text = "Test";
DrawTextA(hDC, Text.c_str(), Text.size(), &rect, DT_CENTER | DT_WORDBREAK);
DeleteDC(hDC);

当然,框架的色阶会有所不同,无论如何我都需要文本可见。

如何用大纲DrawText例如,带有黑色轮廓的白色文本。

最佳答案

两种方法:

  • 用黑色绘制文本,但以2像素(好运)为单位稍稍放大,并以(-1,-1)偏移,然后通常以白色为中心。
  • 以黑色绘制文本,但在中间将{ (-1,-1), (1,1), (-1,1), (1,-1) }偏移,然后以白色绘制。
  • 关于c++ - 使用GDI(C++)绘制轮廓的DrawText,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44265273/

    10-11 15:42