文本和字体

简单的文本输出

TextOut(hdc,xStart,yStart,pString,iCount):xStart是第一个字符的水平位置,但这个参数的意义可以用SetTextAlign改变,TA_LEFT为默认方式,TA_RIGHT则xStart是最后一个字符的水平位置,TA_CENTER则xStart是中间字符的水平位置。同样,TA_TOP、TA_BOTTOM和TA_BASELINE表示yStart的意义——字符在垂直方向的位置,TA_TOP为默认。如果用TA_UPDATECP标记,则系统忽略xStart和yStart参数,文本从当前位置输出(MoveToEx或LineTo等函数改变),同时调用完成后,它还把当前位置移动到文本末尾(TA_LEFT)/开始(TA_RIGHT)/不变(TA_CENTER),这个在多次调用TextOut显示一行文本时方便。

TabbedTextOut(hdc,xStart,yStart,pString,iCount,iNumTabs,piTabStops,xTabOrigin):输出带有"/t"的文本。如果iNumTabs和piTabStops都是0,则每隔平均字符宽度8倍输出一个制表符。xTabOrigin是制表计算的起始位置。

ExtTextOut(hdc,xStart,yStart,iOptions,&rect,pString,iCount,pxDistance):iOptions为ETO_CLIPPED则rect为裁剪区,为ETO_OPAQUE则rect与当前背景色相同。pxDistance是相邻字符间的间距,可以伸缩列宽,如果为NULL则为默认。

DrawText(hdc,pString,iCount,&rect,iFormat):把文本显示在rect内,如果pString是'/0'结束,iCount可取-1。iFormat为0(DT_LEFT),文本中遇到回车或换行符(/r或/n)就从rect左边、向下一行继续输出文本。iFormat为DT_RIGHT则靠右侧输出。iFormat为DT_CENTER则在中间输出。如果不想转义回车换行符,则iFormat加上DT_SINGLELINE标记。DT_TOP、DT_BOTTOM和DT_VCENTER可以控制文本的靠上、靠下或靠中间。iFormat还有DT_WORDBREAK、DT_NOCLIP、DT_EXTERNERLLEADING、DT_EXPANDTABS、DT_TABSTOP等选项。

DrawTextEx(hdc,pString,iCount,&rect,iFormat,&drawtextparams):用来解决用DrawText修改文本中制表符的问题。

以上函数输出文本都以hdc当前选择的字体输出。

 

DC文本属性

SetTextColor(hdc,rgbColor);

SetBkColor(hdc,rgbColor);

SetBkMode(hdc,iMode):iMode为OPAQUE或TRANSPARENT。OPAQUE为默认,输出文本以SetBkColor设置的颜色为背景。TRANSPARENT为透明背景。

GetSysColor(COLOR_WINDOWTEXT):获取系统设置的文本色

GetSysColor(COLOR_WINDOW):获取系统设置的窗口色

SetTextCharacterExtra(hdc,iExtra):设置字符间间距,默认为0。如果iExtra为负,则取它的绝对值。GetTextCharacterExtra可获得当前Extra。

GetTextFace(hdc,sizeof(szFaceName)/sizeof(TCHAR),szFaceName):获得当前DC选择的字体名称

GetTextMetrics(hdc,&textmetric):textmetric是TEXTMETRIC结构体变量,有20个字段。

 

选择 、创建字体

GetStockObject(iFont):返回字体句柄,iFont可以是SYSTEM_FONT、SYSTEM_FIXED_FONT、OEM_FIXED_FONT、DEFAULT_GUI_FONT

CreateFont:14个参数,一般不用。

CreateFontIndirect(&logfont):logfont是LOGFONT结构体,有14个字段,默认值都为0。flHeight设置字体高度,flWidth设置宽度,对于raster字体无效。lfEscapement设置文本的输出方向(单个字符仍与水平方向平行),以0.1度为单位。lfOrientation改变字符输出方向。lfWeight设置字体粗细,WINGDI.H中定义了一部分值:FW_DONTCARE(0)、FW_THIN(100)……FW_HEAVY(900),一般用0或400用做普通粗细,700用做加粗。lfItalic为非0则使用斜体字,lfUnderline非0则加下划线,lfStrikeout非0则加删除线。lfCharSet设置字符集。lfOutPrecision定义实际字体如何匹配lfHight与lfWeight字段的值,不常用,可以用OUT_TT_ONLY_PRECIS标志确保只使用TrueType字体。lfClipPrecision设置字符部分在剪裁区外如何剪裁,不常用。lfQuality只用reaster字体有效,DRAFT_QUALITY表示把字体拉伸到你想要的大小(lfHeight和lfWidth的值),如果用PROOF_QUALITY标志,则不会拉伸字体,一般用DEFAULT_QUALITY(0)。lfPitchAndFamily,这个字段由两部分组成,低两位设置Pitch,即字符宽度使用固定宽度还是变化的宽度,可取三个值:DEFAULT_PITCH(0)、FIXED_PITCH(1)、VARIABLE_PITCH(2),高四位设置字体家族(font family)。lfFaceName设置选择的字体名,如果用TrueType斜体或粗体,可以设置lfFaceName为基础字体名加Italic等,也可以只设为基础名,在其它字段设置属性。

 

列举字体

EnumFonts(hdc,szTypeFace,EnumProc,pData)

EnumFontFamilies(hdc,szFaceName,EnumProc,pData)

EnumFontFamiliesEx(hdc,&logfont,EnumProc,pData,dwFlags)

ChooseFont(&choosefont)

 

文本格式化(Text Formatting)

GetTextExtentPoint32(hdc,pString,iCount,&size):获得当前dc下输出pString的长度和宽度。输出时,对yStart加size.cy就可以在下一行输出。如果要在xLeft和xRight之间输出字符,对于左对齐,xStart取xLeft;对于右对齐,xStart取xRight-size.cx;对于居中,xStart取(xLeft+xRight-size.cx)/2。

SetTextJustification(hdc,iExtra,iCount):设置系统输出一行字符串时在空格处添加的空格数。iExtra为总空格,iCount为一行中的空格数。iExtra取xRight-xLeft-size.cx,TextOut中xStart取xRight,可以在xLeft到xRight之间两端对齐,且多余的空间平均分配在空格处。

 

路径层

BeginPath(hdc):开始路径在路径,中可以使用各种GDI函数,绘制文本的有TextOut。

EndPath(hdc):结束路径

StrokePath(hdc):绘制路径

FillPath(hdc):填充路径

StrokeAndFillPath(hdc):绘制并填充路径

ExtCreatePen(iStyle,iWidth,&lBrush,0,NULL):创建HPEN,可以设定线条两端和连接处的形状。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值