TextOut和DrawText的比较

TextOut的用法:

TextOut(HDC hdc, int nXStart, int nYStart, LPCTSTR lpString, int cbString)

 参数hdc就是要绘制文字的DC句柄

 参数nXStart就是文字要绘制的起点位置的X坐标。

 参数nYStart就是文字要绘制的起点位置的Y坐标。

 参数lpString就是要绘制的文字的字符串指针。

 参数cbString就是要绘制的文字的字符个数。

 

DrawText的用法:

int WINAPI DrawText(

  HDC hdc,  //DC的句柄

  LPCWSTR lpchText,  //要绘制的文本

  int cchText,  //要绘制的文本的长度

  LPRECT lprc,  //绘制的目标区域

  UINT format  //绘制标志,                                              DT_SINGLELINE等

  );   

 hdc:要绘制文字的DC句柄

 pString:要绘制的字符串。

 nCount:要绘制的字符个数,-1代表绘制以NULL结尾的字符串。

 lpRect:要绘制的区域。

 uFormat:要绘制的格式。可以是下列值的组合。

                  DT_BOTTOM,  文本底对齐。

                  DT_CENTER,  文本水平居中显示。

                  DT_LEFT,  文本左对齐。

                  DT_VEENTER,  文本垂直居中显示。

                  DT_RIGHT,  文本右对齐。

                  DT_SINGLELINE,  只指定单个行。回车和换行,均不打断原有行。

                  DT_TOP,  文本顶对齐。

                  DT_WORDBREAK,指定单词间的中断。如果字符串中的一个单词超出lpRect指向的矩形的右边界时,则函数将在单词之间自动切断正文行。

                  DT_CALCRECT,  确定矩形的宽度和高度,如果有多个正文行,DrawText则将使用由lpRect参数指定的矩形宽度,并且延伸矩形底部,直到能框住正文行的最后一行。如果只有一行正文,DrawText将修正此矩形的右边,以便能框住此行正文的最后一个字符。带入此参数后,DrawText不绘制字符串。

                  DT_END_ELLIPSIS,如果字符串的长度超过矩形的范围,它会被截断并以省略号标识。

 

      相比两种绘制方式,发现DrawText是采用绘制区域跟绘制格式来控制绘制的位置,而TextOut是直接采用起始位置来控制绘制的位置,所以在自定义位置绘制时TextOut更灵活一些,而以布局式绘制时,DrawText更适合一些。此外DrawText还可以计算所绘制字符串的面积大小,还可以以省略号代替超出区域的文本。

 

 

 

 

 

你可能感兴趣的:(TextOut和DrawText的比较)