GDI+ DrawString空格问题

爱爬山的木木 2011-03-15 09:18:03

szText = _T("Hello ABC");
StringFormat oFormat;
oFormat.SetAlignment(StringAlignmentFar );
oFormat.SetLineAlignment(StringAlignmentFar );
oFormat.SetFormatFlags(oFormat.GetFormatFlags() |StringFormatFlagsMeasureTrailingSpaces);
pGraphics->DrawString(szText, szText.GetLength(), &oFont1, rcLayout, &oFormat, &oBrush);


我用GDI+绘制字符,出现的问题如下:
在szText的两个单词之间无论添加多少空格,最多只能画两行。
不知道是不是我StringFormat是不是还有参数没有设置?
谢谢大家!
...全文
445 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
爱爬山的木木 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 j8daxue 的回复:]

引用 3 楼 apchy_ll 的回复:
谢谢。

引用 2 楼 j8daxue 的回复:
好像会计算字符串的长度而换行,rcLayOut太宽所以才只有2行?


不是,假如reLayout宽度固定为100,应该来讲,添加空格越多,可能导致有多行!但是他计算的时候,貌似无论多少空格都只会在一行以内画下来!不管字体大小多少。

GDI+对这么多空格的处理不知道是怎样的,确实只换一……
[/Quote]
我接收键盘输入,然后显示起来,像一个edit控件,如果输入很多空格原则上讲需要将光标没输入应该空格就应该有一个字符~所以~。。
j8daxue 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 apchy_ll 的回复:]
谢谢。

引用 2 楼 j8daxue 的回复:
好像会计算字符串的长度而换行,rcLayOut太宽所以才只有2行?


不是,假如reLayout宽度固定为100,应该来讲,添加空格越多,可能导致有多行!但是他计算的时候,貌似无论多少空格都只会在一行以内画下来!不管字体大小多少。
[/Quote]
GDI+对这么多空格的处理不知道是怎样的,确实只换一行而已。
要换行在字符串里加\r\n就可以。空格那么多要达到什么目的?
爱爬山的木木 2011-03-15
  • 打赏
  • 举报
回复
谢谢。
[Quote=引用 2 楼 j8daxue 的回复:]
好像会计算字符串的长度而换行,rcLayOut太宽所以才只有2行?
[/Quote]

不是,假如reLayout宽度固定为100,应该来讲,添加空格越多,可能导致有多行!但是他计算的时候,貌似无论多少空格都只会在一行以内画下来!不管字体大小多少。
j8daxue 2011-03-15
  • 打赏
  • 举报
回复
好像会计算字符串的长度而换行,rcLayOut太宽所以才只有2行?
爱爬山的木木 2011-03-15
  • 打赏
  • 举报
回复
怎么都没有人回复我?
j8daxue 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 apchy_ll 的回复:]
Thanks,必须要用GDI+实现~悲剧了。。

引用 6 楼 j8daxue 的回复:

试下GDI的DrawText组合DT_EDITCONTROL | DT_WORDBREAK
[/Quote]
DirectX的文字都是用GDI实现的。GDI算是很底层的,既然GDI+能用GDI为什么不能?
爱爬山的木木 2011-03-15
  • 打赏
  • 举报
回复
Thanks,必须要用GDI+实现~悲剧了。。
[Quote=引用 6 楼 j8daxue 的回复:]

试下GDI的DrawText组合DT_EDITCONTROL | DT_WORDBREAK
[/Quote]
爱爬山的木木 2011-03-15
  • 打赏
  • 举报
回复
谢谢你!
[Quote=引用 8 楼 hdt 的回复:]
试一下,全角空格
[/Quote]
爱爬山的木木 2011-03-15
  • 打赏
  • 举报
回复
谢谢你!
[Quote=引用 7 楼 coubulaji 的回复:]
大哥你想要什么效果?想要画多行你竖着画不就好了?
[/Quote]
额~我是想一个单词后面不管你加多少个空格,它都只会在一行以内画完。
例如:_T("Hello ABC");可能改好将ABC画到第二行,但是你不够在中间在添加多少空格,ABC都不会跑到第三行去!空格没有起到占位的作用!
真相重于对错 2011-03-15
  • 打赏
  • 举报
回复
试一下,全角空格
_Sodo_ 2011-03-15
  • 打赏
  • 举报
回复
大哥你想要什么效果?想要画多行你竖着画不就好了?
j8daxue 2011-03-15
  • 打赏
  • 举报
回复
试下GDI的DrawText组合DT_EDITCONTROL | DT_WORDBREAK

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧