画图时线条相交问题!

cxfirefox 2003-08-02 01:22:56
在实现线条的选中和移动——移动是采用在OnMouseMove事件中反复重画的方法并且pen.mode:=pmNotXor——中出现一个问题,就是在拖动线条的时候,如果两个直线相交,在拖动中,被拖动的那个直线会把与其相交的直线“刮”处很多断点,看起来这个直线就好像被割裂了一样。我认为是在拖动的时候,重画了两直线之间的相交点的颜色,但是继续拖动的话,先前被改变的那个相交点却没有恢复,导致了这些点看起来就跟被断开了一样,不知道诸位有什么办法解决?
还有如果能实现图层的话,这些直线就能互不干扰了,但是应该怎么实现呢?
...全文
148 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cxfirefox 2003-08-09
  • 打赏
  • 举报
回复
to xiaoxiao197821(你的笑对我很重要) :哦,这个样子,我只是在mousemove中两次pmNotxor,那我试试看在up中pmcopy,谢谢!有结果再请指点!
xiaoxiao197821 2003-08-08
  • 打赏
  • 举报
回复
图层是逻辑上的,和画图实现没什么关系吧
定义个数组就可以了,先画后查就体现出图层了
xiaoxiao197821 2003-08-08
  • 打赏
  • 举报
回复
定义mx,my全局变量

在move里先用两次pen.mode:=pmnotxor
第一次mylineto(mx,my,pmnotxor)
mx := x;
my := y;
二次 mylineto(mx,my,pmnotxor)

在up里用一次pen.mode:=pmcopy
mylineto(mx,my,pmcopy)
我做的画线没你说的问题
yjw1018 2003-08-07
  • 打赏
  • 举报
回复
studying
cxfirefox 2003-08-07
  • 打赏
  • 举报
回复
我一开始用的是pen.mode:=pmnotxor,如果要清除原来直线的话,也要用pmNotXor吧?还有就是怎么判断直线交叉呢?
DY2003 2003-08-06
  • 打赏
  • 举报
回复
我也碰到过类似问题,托动直线时用Pen.Mode := pmXor;清除原来直线,
再Pen.Mode := pmCopy;重画有交叉直线。
weibz0525 2003-08-04
  • 打赏
  • 举报
回复
从Graphics::TBitmap动态生成2个对象,属性也付与一样,进行图层,当然只是建议。
要不就是判断直线的象素点,,如果碰到直线的象素点,就取消xor操作。

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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