旋转文字行

【勇芳软件工作室】汉化HomePreviousNext

您可以任意角度旋转TrueType字体。这对于标注图表和其他插图非常有用。以下示例通过更改用于创建字体的LOGFONT结构的lfEscapementlfOrientation成员的值,围绕客户区域的中心以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);