如何删除Canvas上的文字?(100分)

  • 主题发起人 主题发起人 吴优
  • 开始时间 开始时间

吴优

Unregistered / Unconfirmed
GUEST, unregistred user!
将Font的Color设为背景色可以达到目的,但会同时删除该处的其它图形,效果不理想,
在Canvas上可以设置Pen.Mode为pmNotXor来绘制或删除直线、圆弧等,
对于Text有没有类似的方法?
 
在相同的位置,用相同的字体,大小,颜色用背景色,重新输出一次文字
不就擦掉了吗?
 
可以试试:
Canvas.FillRect(Canvas.ClipRect);
 
用背景色再写一遍
 
你可先将文字输出到内存中(如另建一个bmp, 写到bmp.Canvas上),
再画到目标Canvas上,就可以用上以上的Pen的方法了
 
这也可以算是 undo 、redo 的问题吧;
输出之前保存相应位置的位图,擦去时读取保存的位图。
 
卷兄说的是。
 
改成背景色再写一遍啊!
 
卷兄
如果我写完字马上就擦除的话是undo问题,可是我写完字后在该文字上又画了条
直线,然后再擦除文字,但不能影响到后画的那条直线,我该怎么做呢?
 
一样的道理,你在文字上画好线,记录下线的起始点坐标,
undo时,重新画线呀。
 
把你的操作放到一个链表里,然后在刷新时画出来。当你需要删除其中的某个
操作时,只要把他从链表中移出去然后刷新就可以了。
 
有个控件:http://www.codeidea.com/html/tcanvastext.html
 
你是在作CAD类的项目吧, 不论是字体还是线条, 擦除后都要把它所覆盖的区域重画的
应该有一个画法, 只重画擦除了的区域, 避免重画整图
 
还是在同一地方输出相同的资料只是使用背景色而已,
这样不会影响其他的图形。
 
看来写文字没有类似pmXor的方法,只能用cqbaobao的方法了,在此多谢各位了
 
后退
顶部