非常简单的问题:在image控件的画布上写上text,请问如何再次获取? (20分)

  • 主题发起人 主题发起人 xiuguo
  • 开始时间 开始时间
X

xiuguo

Unregistered / Unconfirmed
GUEST, unregistred user!
程序:
img.canvas.textout(5,5,'hello');
..
如果要获得img中的文本,该如何实现呀?
 
如果是你自己写上的text,你当然知道它是什么了。
如果不是别人程序写的text,你要搞文字识别?清华的OCR技术也没有太大突破。
 
都写到图上了还想得到,是不是有点后悔啊?
如果你不想搞什么图象识别的话,在内存中保存你写到图上的文本和坐标甚至范围(Rect)。
 
有本事就在内存里修改 GDI 函数的入口点,指向你的一个函数。
然后向指定窗口发重绘消息,你的函数拦截这个字符串。(中文
之星就是这么干的)
 
xiuguo:老大,把你的帖子都提提前吧,不要我提醒的就提前,不提醒的就不提前了。
 
>修改 GDI 函数的入口点
在NT下好像有难度。
有一点需要注意——只要在写的时候没有用到变形技术或覆盖——都可以根据字库的点阵进行匹配,
并不需要专业的OCR技术,我以前用过的一个软件就是这么做的。
至于如何提取字库的点阵——另请高明吧。
 
把那一块区域截下来,
 
如果是你自己写上的,还是保存文字方便;
如果不是,没辙!
 
这个问题涉及到剪贴板的操作.
比如你在Form上放了一个Edit1,一个Edit2,那么,你将文字输入到
Canvas上可以如下 :
Image.Canvas.TextOut(5,5,Edit1.Text);
为了再次得到同样的文字,你应该首先选中Edit1中的文字,
然后 :Edit1.CopyToClipBoard;
Edit2.PasteFromClipBoard;
这样你的文字就通过剪贴板实现了保存。
当然,你还需要在uses加入ClipBrd单元.
 
向IMAGE窗口发出重绘消息,拦截TEXTOUT函数
 
把写入的文本记入到链表中
 
TCanvasText可满足您的要求
http://www.truevcl.com/html/tcanvastext.html

在许多场合中,我们要在TImage上写一些字,同时又可以拖动它,TCanvasText可满足这种需求.
易于使用,只需用鼠标控制;
不闪烁
可设置字体的颜色,大小
可在TImage任意拖动
可以删除
多版本Delphi 4.0 5.0 6.0 ;BCB4.0 5.0

 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部