您可以任意角度旋转TrueType字体。这对于标注图表和其他插图非常有用。以下示例通过更改用于创建字体的LOGFONT结构的lfEscapement和lfOrientation成员的值,围绕客户区域的中心以10度增量旋转字符串。
RECT rc;
int angle;
HFONT hfnt, hfntPrev;
LPSTR lpszRotate = "String to be rotated.";
/ *为LOGFONT结构分配内存。*/
PLOGFONT plf = (PLOGFONT) LocalAlloc(LPTR, sizeof(LOGFONT));
/ *指定字体字体名称和重量。*/
lstrcpy(plf->lfFaceName, "Arial");
plf->lfWeight = FW_NORMAL;
/ *检索客户矩形维度。*/
GetClientRect(hwnd, &rc);
/*
*将背景模式设置为透明
*文本输出操作。
*/
SetBkMode(hdc, TRANSPARENT);
/*
*绘制字符串36次,旋转10度
*每次逆时针。
*/
for (angle = 0; angle < 3600; angle += 100) {
plf->lfEscapement = angle;
hfnt = CreateFontIndirect(plf);
hfntPrev = SelectObject(hdc, hfnt);
TextOut(hdc,rc.right / 2,rc.bottom / 2,
lpszRotate, lstrlen(lpszRotate));
SelectObject(hdc, hfntPrev);
DeleteObject(hfnt);
}
/ *将背景模式重置为默认值。*/
SetBkMode(hdc, OPAQUE);
/ *释放分配给LOGFONT结构的内存。*/
LocalFree((LOCALHANDLE) plf);