Visual C++实现各种文字特殊效果
2007-03-15 21:48:48 来源:WEB开发网核心提示: typedef struct tagLOGFONT {LONG lfHeight; //字符字体高度 ;LONG lfWidth; //字符平均宽度 ;LONG lfEscapement; //文本行逆时针旋转角度;LONG lfOrientation; //字体角度 ;LONG lfWe
typedef struct tagLOGFONT {
LONG lfHeight; //字符字体高度 ;
LONG lfWidth; //字符平均宽度 ;
LONG lfEscapement; //文本行逆时针旋转角度;
LONG lfOrientation; //字体角度 ;
LONG lfWeight; //字体粗细程度 ;
BYTE lfItalic; //倾斜 ;
BYTE lfUnderline; //下划线 ;
BYTE lfStrikeOut; //删除线 ;
……
} LOGFONT;
在对LOGFONT结构进行设置时,lfOutPrecision、lfClipPrecision、lfQuality 以及lfPitchAndFamily等几个成员变量一般可如下设置而无需改动:
LOGFONT lf; //lf定义字体属性
lf.lfOutPrecision= OUT_STROKE_PRECIS;
lf.lfClipPrecision= CLIP_STROKE_PRECIS;
lf.lfQuality = DRAFT_QUALITY;
lf.lfPitchAndFamily= VARIABLE_
PITCH|FF_MODERN;
对于其他的成员变量则要根据实际需求进行具体的设定。例如,对于没有下划线和删除线并且没有倾斜处理的粗体幼圆汉字,可以采取如下设置:
lf.lfHeight = 50;
lf.lfWidth = 0;
lf.lfEscapement = 0;
lf.lfOrientation = 0;
lf.lfWeight = FW_HEAVY;
lf.lfItalic = FALSE;
lf.lfUnderline = FALSE;
lf.lfStrikeOut = FALSE;
lf.lfCharSet = GB2312_CHARSET; strcpy(lf.lfFaceName,"幼圆");
(一)显示倾斜的文字
上文中的图一显示了通过显示一系列的倾斜字符串来实现环绕显示的效果,下面来详细说明如何实现这个效果。
实现上述的效果其实很容易,只要使用CFONT类和LOGFONT结构来灵活的创建字体,设置字体的属性,就可以实现倾斜文字的效果。LOGFONT结构中包含了所要创建的字体中的全部信息,其中的ifEscapement 成员制定了所创建的字体与水平方向所倾斜的角度,需要读者注意的是该成员变量角度的单位是十分之一度而不是度,例如,如果ifEscapement定义为450,它表示字体的倾斜角度为45度。为了保证所有的字体按照一个方向旋转,一定要设置ifEscapenent的CLIP_LH_ANGLES位,否则字体有可能向反方向旋转。
更多精彩
赞助商链接