Rotating Lines of Text

You can rotate TrueType fonts at any angle. This is useful for labeling charts and other illustrations. The following example rotates a string in 10-degree increments around the center of the client area by changing the value of the lfEscapement and lfOrientation members of the LOGFONT structure used to create the font.

RECT rc;

int angle;

HFONT hfnt, hfntPrev;

LPSTR lpszRotate = "String to be rotated.";

/* Allocate memory for a LOGFONT structure. */

PLOGFONT plf = (PLOGFONT) LocalAlloc(LPTR, sizeof(LOGFONT));

/* Specify a font typeface name and weight. */

lstrcpy(plf->lfFaceName, "Arial");

plf->lfWeight = FW_NORMAL;

/* Retrieve the client-rectangle dimensions. */

GetClientRect(hwnd, &rc);

/*

* Set the background mode to transparent for the

* text-output operation.

*/

SetBkMode(hdc, TRANSPARENT);

/*

* Draw the string 36 times, rotating 10 degrees

* counter-clockwise each time.

*/

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);

}

/* Reset the background mode to its default. */

SetBkMode(hdc, OPAQUE);

/* Free the memory allocated for the LOGFONT structure. */

LocalFree((LOCALHANDLE) plf);

Software for developers
Delphi Components
.Net Components
Software for Android Developers
More information resources
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
Databases for Amazon shops developers
Amazon Categories Database
Browse Nodes Database