使用GDI+ Graphics::DrawString方法绘制字符串时,字符串中的制表符(Tab)竟然全都无效,本以为每个制表符应该相当于4个空格的宽度,但是却没有效果。测试效果图如下:
测试代码如下:
VOID writeText(HWND hwnd,LPWSTR strText)
{
//测试字符串,含有5个制表符
WCHAR str[] = L"Determines the \t\t\twidth and \theight of the \trectangle. ";
strText = str; //窗口画布
Graphics g(hwnd);
RectF rect(100,10,200,100),rectText; //绘制文本矩形
g.DrawRectangle(&Pen(Color::Black),rect); //使用9号宋体
FontFamily ffamily(L"宋体");
Font font(&ffamily,9,0,UnitPoint); //设置字体格式
StringFormat sf;
sf.SetAlignment(StringAlignmentNear); //水平左对齐
sf.SetLineAlignment(StringAlignmentNear);//垂直顶对齐
sf.SetFormatFlags(StringFormatFlagsLineLimit|StringFormatFlagsMeasureTrailingSpaces|StringFormatFlagsDisplayFormatControl);
sf.SetTrimming(StringTrimmingWord);//按词断行 //绘制字符串
g.DrawString(strText,-1,&font,rect,&sf,&SolidBrush(Color::Red));}说明:
(1)测试代码中使用了字符串常量,但实际应用中字符串中的制表符数量是不定的。StringFormat::SetTabStops方法怎么适应这种制表符数量不定的情况或有其它设置可以指定所有制表符的宽度?
(2)测试环境:Win7sp1中文 + vc6英文sp6急,请赐教!