我写了一个作图程序,需要让用户能在任意位置加入文字,一如WINDOWS“画图”中的那样。向大虾们请教。十万火急!!!(80分)

  • 主题发起人 主题发起人 learningguy
  • 开始时间 开始时间
L

learningguy

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了一个作图程序,需要让用户能在图的任意位置加入文字,一如WINDOWS“画图”中的那样--- 选择“输入文字”,点击图形后在点击处出现编辑框,可输入文字。同时,点击以前输入的文字可以重新激活编辑框以编辑修改。

望不吝赐教。
 
呵呵,我写了一个简单的,不过找不到了,
是这么做的:
继承 TImage, 加一个 TMemo, 在鼠标点下的时候,创建 memo
显示, 在适当的情况下,释放 memo,

具体请看 http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=262858
 
方法1:TImage上加入透明的TEdit(麻烦点)
方法2:TImage上加入透明的TMemo
 
呵呵, Edit Memo 是一样的.
 
用Drawtext函数可以在任意位置,任意大小的矩形内进行文本描绘,具体看一下该函
数的帮助吧!
 
edit,memo 不会一样吧,edit只能显示一行文本。

MMX老兄,多谢你的提醒。lingxin 你虽然晚了一步,但我还是要感谢你。不过这问题对二位有点太简单了吧,嘻嘻。再提个相关问题,回答后银子定当奉上。
我想在image 中选中图形的一部分,可用鼠标拖动。并可剪切,拷贝,粘贴。最好提供源代码。谢谢。

 
放置一个透明的Label,然后响应Form的OnKeyDown,OnKeyPress,OnKeyUp等
事件以更新该Label
 
to learningguy:
实际上是一样的.
 
用Canvas的CopyRect函数可以对选定的图形进行诸如放大,拷贝等功能.
procedure CopyRect(Dest: TRect; Canvas: TCanvas; Source: TRect);
 
0.type
ddd=record
name: array of string;//内容
xy: Tpoint;
myFont:TFont;
end;
1.先将底图单独保存到内存
2.输入状态下:鼠标单击后根据坐标显示edit;
3.确定后(如enter) textout该文本,同时保存到ddd;
4.编辑状态下:检索ddd的xy范围,true时显示edit...
5.这样后可以对图片剪切,拷贝,粘贴。
 
另说明:
1.textout似乎不支持#13;
2.编辑修改后恢复底图,重写ddd数据,精点可局部恢复(如果图片很大或ddd数据很大)
 
用 TImage 吧,TImage.Canvas.Textout
 
我认为用透明的Edit是解决问题的方向。
 
如果想要更复杂的编辑功能,恐怕就要用到layer了,
一个编辑动作是一个layer,然后把所有的layer合并。
 
大家看看 windows 的 画图,用的就是一个 edit,
透明不好, 看不清输入的字,

关键部分我已在上面的连接中写了.
 
MMX老兄,用透明edit已经可以解决我的问题了。
我想再提个相关问题。可以吗?
我想在image 中选中图形的一部分,可用鼠标拖动。并可剪切,拷贝,粘贴。最好提供源代码。谢谢。
 
先建一个bitmap大小和用户定义的一样,然后背槩作为白,用canvas.textout画出文字.然后在你的控件中用 *.canvas.pen.copymode:=(**)(忘了),然后用*.canvas.draw(x,y,bitmap)就好了
 
多人接受答案了。
 

Similar threads

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