VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 920|回复: 2

windows程序设计大神进

[复制链接]
01_avatar_middle
最佳答案
0 
online_vip 发表于 2016-7-22 15:11:14 | 显示全部楼层 |阅读模式
3驿站币
dc.TextOut(0, 50, "宋体");
dc.SetMapMode (MM_LOENGLISH);
dc.TextOut(0, -50, "宋体");
dc.SetMapMode(MM_ANISOTROPIC);
dc.SetWindowExt(24, 24);
dc.SetViewportExt(96, 96);
dc.TextOut(0, 100, "宋体");
为什么输出的字长度都差不多,但是宽度不一样呢,是不是SetMapMode对TextOut有影响?如果是有影响的话,那为什么将汉字换成数字或字母,那输出的字大小又是一样的。请高手帮我解答。





上一篇:网络编程_爬虫
下一篇:文件选择对话框多选时,如何才能选择的文件自动添加到ListCtrl控件中
51_avatar_middle
最佳答案
82 
online_admins 发表于 2016-7-22 17:09:56 | 显示全部楼层
刚一朋友找我聊天说了这个问题,我把他的意思贴上来吧!

情况确实是这样,两次 dc.TextOut(0, 50, "宋体"); 的结果不同,确实是 dc.SetMapMode (MM_LOENGLISH); 影响的,因为映射方式不同了,所以宽度上就有变化。
不过改成数字或者英文之后,表面上看宽度又近似一致,这个可能就是 TextOut 底层的实现问题了。

使用这个测试代码:
CSize text_size = pDc->GetTextExtent(_T("abcdefghijklmn"));
pDc->SetMapMode(MM_LOENGLISH);
text_size = pDc->GetTextExtent(_T("abcdefghijklmn"));

两次得到的 text_size 宽度和高度已经不一样了,所以,即使是英文也是会产生宽度不同的情况。
只不过最后 TextOut 的时候结果表现就是当前这种情况了。

希望对楼主有帮助吧!
01_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2016-7-22 18:00:39 | 显示全部楼层
Syc 发表于 2016-7-22 17:09
刚一朋友找我聊天说了这个问题,我把他的意思贴上来吧!

情况确实是这样,两次 dc.TextOut(0, 50, "宋体 ...

你好:
       首先我想问一下的是dc.SetMapMode (MM_LOENGLISH); 有影响的话为什么只有宽度上有变化,高度上没有变化。还有就是
CSize text_size = pDc->GetTextExtent(_T("abcdefghijklmn"));
pDc->SetMapMode(MM_LOENGLISH);
text_size = pDc->GetTextExtent(_T("abcdefghijklmn"));
这个返回的是逻辑上的值,所以不能说宽度发生了变化。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-10-21 09:39

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表