本人在站内看到很多相关帖子 ,但回答的都不尽人意. 比如很多人都说用 LOGFONT 这个结构可以实现.但实际并非如此. 当设置角度后,一行文字用drawtext方法输出时,越靠后的文字部分,只能显示一半或者更少或者根本显示不出来.好像被截断了.
    不知道有没有高人用什么方法可以实现文字任意角度旋转,而且显示完整.
    另外有人知道windows的图片编辑器里面,有个添加文字的功能,其中可以使文字改变方向,使文字竖着横着排.不知道怎么实现啊!!!也一并请教.希望大家救命啊!!!!
    

解决方案 »

  1.   

    CEdit不支持
    DrawText那是自己画。你可以参考http://msdn.microsoft.com/en-us/library/ms533957(VS.85).aspx
      

  2.   

    楼主说的很对 是被截断了。我也弄过遇到过这个问题,当然我的只要求文字旋转、放大缩小、平移而不要求选中、删除等操作。
     
    首先有一个问题你必须接受,那就是Windows的窗口只能是正矩形,不能倾斜也不能是不规则的。当然你会说,有不规则的啊?
    其实不规则的窗口只是外形上不规则,最根本上还是正矩形。Edit也是一个窗口,它也只能是正矩形。所以,你在使用LOGFONT的时候文字一旋转就超出了这个矩形的范围,就会被截断。有一种方法,就是根据文字的倾斜计算Edit的客户区应该是一个多大的正矩形,然后再动态设定Edit的大小,最后再旋转文字。另外一种,抛弃MFC的Edit控件吧,自己写一个类,没有基类的类。 自己添加文字选中、删除、鼠标响应等函数功能。
      

  3.   


    DrawText/TextOut  输出到内存DC,对内存DC 进行旋转矩阵变换,再拷贝输出到屏幕
      

  4.   

    只能显示一半或者更少或者根本显示不出来.好像被截断了.
    ===========================================================
    那就做一个大一点的CEdit不就行了或者把字体改小,呵呵没做过瞎说的
      

  5.   

    楼主说的很对 是被截断了。我也弄过遇到过这个问题,当然我的只要求文字旋转、放大缩小、平移而不要求选中、删除等操作。 首先有一个问题你必须接受,那就是Windows的窗口只能是正矩形,不能倾斜也不能是不规则的。当然你会说,有不规则的啊? 
    其实不规则的窗口只是外形上不规则,最根本上还是正矩形。 Edit也是一个窗口,它也只能是正矩形。所以,你在使用LOGFONT的时候文字一旋转就超出了这个矩形的范围,就会被截断。 有一种方法,就是根据文字的倾斜计算Edit的客户区应该是一个多大的正矩形,然后再动态设定Edit的大小,最后再旋转文字。 另外一种,抛弃MFC的Edit控件吧,自己写一个类,没有基类的类。 自己添加文字选中、删除、鼠标响应等函数功能。 
      

  6.   

        非常感谢大家的回答。如果不用CEdit实现文字的旋转也可以,有没有其他的好办法呢!望大家赐教,小弟在这里再次感谢了!