用CDC的DrawText输出文字后,怎样得到文字的显示区域?该如何解决
用CDC的DrawText输出文字后,怎样得到文字的显示区域?
文字的主要显示align位置,只有5种:DT_LEFT、DT_CENTER 、DT_RIGHT、DT_SINGLELINE、DT_WORDBREAK。由于标志WORDBREAK,可能会输出多行,怎么样得到这多行的显示区域?
------解决方案--------------------
有一个DT_CALC, 同时, 直接WORDBREAK应该不会多行, 只会截断, 有一个EDITCONTROL???
------解决方案--------------------
使用参数DT_CALCRECT,DrawText将根绝lpRect参数指定宽度计算并返回格式化后的文字高度,而不实际画图。
------解决方案--------------------
对,就是楼上所说的方法即可.
------解决方案--------------------
WORDBREAK 会多行, 加入参数DT_CALCRECT 可以取得显示的区域,
DT_CALCRECT 时并不会显示出来, 他只是模拟计算显示区域,
在用DT_CALCRECT 时注意 RECT的区域必须先设置好
------解决方案--------------------
GetTextExtent()可以得到一行文字的长宽,你有几行文字就可以乘以几得到文字占的区域,而后再加上文字之间的空隙,这可以通过GetTextMetrics()得到,加上前面得到的结果,最后的结果就是你的精确的矩形。
------解决方案--------------------
GetTextExtent
文字的主要显示align位置,只有5种:DT_LEFT、DT_CENTER 、DT_RIGHT、DT_SINGLELINE、DT_WORDBREAK。由于标志WORDBREAK,可能会输出多行,怎么样得到这多行的显示区域?
------解决方案--------------------
有一个DT_CALC, 同时, 直接WORDBREAK应该不会多行, 只会截断, 有一个EDITCONTROL???
------解决方案--------------------
使用参数DT_CALCRECT,DrawText将根绝lpRect参数指定宽度计算并返回格式化后的文字高度,而不实际画图。
------解决方案--------------------
对,就是楼上所说的方法即可.
------解决方案--------------------
WORDBREAK 会多行, 加入参数DT_CALCRECT 可以取得显示的区域,
DT_CALCRECT 时并不会显示出来, 他只是模拟计算显示区域,
在用DT_CALCRECT 时注意 RECT的区域必须先设置好
------解决方案--------------------
GetTextExtent()可以得到一行文字的长宽,你有几行文字就可以乘以几得到文字占的区域,而后再加上文字之间的空隙,这可以通过GetTextMetrics()得到,加上前面得到的结果,最后的结果就是你的精确的矩形。
------解决方案--------------------
GetTextExtent