怎样动态的输入文字以及竖直输入?就如同画图中的文字输入!!!用鼠标框定一个矩形,在矩形中输入文字,同时能够对文字的显示方式进行设定:普通(水平显示),特殊(竖直显示)。有没有这方面的文字输入函数,可是DrawText不能实现动态输入,只能是静态输入。能不能在Timage中实现这个功能,因为不只是进行字处理,还需要进行图像处理。

解决方案 »

  1.   

    我用TEdit和TLabel做过水平显示的输入竖直显示没有实现学习!
      

  2.   

    何为动?何为静?其实就是如此简单,输入字符?处理消息WM_CHAR,就像OnKeyPress用个字符串把字符记下来
    Str:=Str+Char;DrawText(GetDC(Handle), PChar(Str), Length(Str), Rect, DT_LEFT or DT_TOP or DT_WORDBREAK);
      

  3.   

    to ehom(?!):这样好像不行吧!
    因为每输入一个字符就进行一次DrawText,因此是在不同Rect输入字符中,
    而且不能进行换行输入,其后的输入格式也是没有什么作用!但是,这样思路倒挺好的!
      

  4.   

    有一个WIN32函数都能实现函数名不记得了
    你找找吧
      

  5.   

    咳,没看明白先不要回复,什么叫不同Rect?DT_WORDBREAK是什么?
      

  6.   

    呵呵, ehom 不要急,新手不怕他不会,就怕他不问,楼主比那些伸手要代码,上来就说我什么不会的人强多了。
    楼主看仔细了:1.用个字符串把字符记下来 Str:=Str+Char;    不是“每输入一个字符就进行一次DrawText,因此是在同Rect输入字符中”
      而是将整个字符串一次性draw出来。哈2.而且不能进行换行输入,其后的输入格式也是没有什么作用!  DT_WORDBREAK就是当字符到了rect的边界时,自动换行的一个标示符如果还有什么不明白的,看看rect的帮助吧。在WIN32SDK里 :-)
      

  7.   

    SpeedButton 每输入一个字用#13#10回车就可以了
      

  8.   

    凡是有Canvas属性的控件(当然包括TImage)都有Canvas.TextOut(), Canvas.TextExtent(), Canvas.TextRect()等一系列方法输出文字。文字的字体,大小,颜色等由Canvas.Font属性设置。
    特别是其中的Canvas.TextRect()方法可以将输出的文字限制在一个矩形框中。看一下上述方法的帮助。
      

  9.   

    谢谢阿德和ehom的帮助!可能上次我的每输入一字就DrawText一次理解有误,而应该是对Str:=Str+char的Drawtext。
    但是,总来的说还是效果不好,我上次说不能回车的意思是:当用户敲回车时进行换行,而不是在rect的边界自动回车。我对继承和重载不是很熟悉,怎样对没有KeyPress过程的控件中进行这样Char操作?比如说Timage,怎样才能把TForm中的KeyPress加到Timage中呢?还有,对于竖直输入问题,我用对中文每个字后加回车的方式实现了竖直输入,但是怎样才能不分中英文的竖直输入呢?谢谢大家了!!!