【发布时间】:2017-10-31 02:35:00
【问题描述】:
我正在使用此代码对来自网络摄像头的帧进行签名:
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带轮廓?例如,黑色轮廓的白色文本。
【问题讨论】:
-
据我所知,这不是(很容易)使用普通 GDI 实现的。另一方面,GDI+ 允许您这样做。有一篇包含大量示例的 CodeProject 文章 (Outline Text)。
-
其实很简单。使用 GDI 路径。