如何实现ms画板的那种在图片上面写文字的功能?橡皮的功能?

keikai 2002-03-18 04:52:56
如何实现ms画板的那种在图片上面写文字的功能?橡皮的功能?
因为写文字,需要有一个可以接受输入焦点的控件。
是不是这个思路:
1、先Image->Canvas->DrawFocusRect(TRect&),
2、而后,将一个预先隐藏的TMemo控件放到这个框中。
3、让用户输入,等该控件失去焦点之后,将DrawFocusRect再作一次,消除
以前的选择框。
4、而后,将TMemo的的图形Copy 到我的Image上?
5、再将TMemo(清空)隐藏。
不知道各位大侠有没有什么好的主意?

不妨再多问一点,橡皮的功能如何实现?
...全文
141 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
HEROIN 2002-03-19
  • 打赏
  • 举报
回复
1.关于文字的处理你思路基本上正确。但注意使用面向对象的方法,如背景类,文字类。。。。要考虑到可能对文字进行修改
2.对于橡皮功能,如果你指的橡皮察,好办,用背景色沿鼠标画线即可。如果你指的是一条沿鼠标运动的线,其实也就是在鼠标左键按下后,MouseMove中:
if(PrevX>=0) //检查前面是否用XOR模式画过
DrawLine(Color,mod_Xor,OriX,OriY,PrevX,PrevY)
DrawLine(Color,mod_Xor,OriX,OriY,CurrentX,CurrentY)
PrevX=CurrentX
PrevY=CurrentY
松开鼠标左键后
DrawLine(Color,mod_Copy,OriX,OriY,CurrentX,CurrentY)
PrevX=-1

就是在鼠标移动过程中用XOR模式画线,用这种模式画两次就等于没画(擦除)


keikai 2002-03-19
  • 打赏
  • 举报
回复
CB的好书没有,几乎全部是他online help的翻译。劝你还是不要舍近求远,直接啃help好了。
dy_2000_abc 2002-03-18
  • 打赏
  • 举报
回复
AKing兄,可以类推嘛,将Rectangle()改为Polygon(多边形),RoundRect(园角矩形),Ellipse(椭圆或园)
kingcaiyao 2002-03-18
  • 打赏
  • 举报
回复
Tang.Jkd,不能完全认为鼠标运动的轨迹就是矩形,要全面考虑。
kingcaiyao 2002-03-18
  • 打赏
  • 举报
回复
唐兄 不一定用户鼠标运动的轨迹都是矩形,要考虑周到。
kingcaiyao 2002-03-18
  • 打赏
  • 举报
回复
你做网络方面的程序,我目前正在学习,可以推荐几本好书给我吗?
keikai 2002-03-18
  • 打赏
  • 举报
回复
小弟我用CB一直做得是网络方面的程序,今天第一次做这个图形方面的程序。
水平着实不堪入目,在此鞠躬谢罪啦。
我正在作一个联机白板的程序(非商业项目)。不同于Netmeeting,这个程序是基于P2P的。
1、第一阶段是要实现如微软画板的功能。
2、第二阶段要实现的是双人联机。
3、第三阶段实现多人联机。
各位如果有兴趣,可以多多指导。尝试合作一下。
我的Mail是Kadvin@163.com
dy_2000_abc 2002-03-18
  • 打赏
  • 举报
回复
这种思路可以办到,只不过要解决若干多的问题比如:文字的再编辑等等等等,橡皮嘛,可以这样:

再OnMouseMove中加入

Image1->Canvas->CopyMode=cmWhiteness;//CB5中好像是cmCopy
Image1->Canvas->Pen->Color=clWhite;
Image1->Canvas->Rectangle(X-2,Y-2,X+2,Y+2);//根据加减数的大小确定橡皮的大小
kingcaiyao 2002-03-18
  • 打赏
  • 举报
回复
我说说我的看法,有错误请指正。
1.首先,橡皮的形状,这控制起来并不困难,可以从鼠标形状上来实现。
2.关于橡皮的功能,我觉就是一种填充功能,我们先要捕捉到鼠标移动的轨迹,然后对它所构成的区域进行填充。
kevin_luzhao999999 2002-03-18
  • 打赏
  • 举报
回复
这个想法也太冷门了吧。

研究一下TCanvas的TextRect、TextOut等与文本相关的方法,我想可以解决问题。

另外,橡皮功能可以在OnMouseMove事件中结合TCanvas属性和填充方法完成,

552

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 茶馆
社区管理员
  • 茶馆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧