有什么简单的方法怎么让窗口外的直线线段不显示啊

rootkit_ole 2013-12-12 07:05:41
就是在窗口上画直线,可以画到窗口外,也就是支持终点在窗口外

然后就是画的同时,在另一个窗口中按一定倍数缩小显示,简单用点除的话会显示原来窗口外的线段

不知道有什么简单的方法没有,总不能一个个算直线和窗口的交点吧,太麻烦了
...全文
105 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sd__q 2013-12-12
  • 打赏
  • 举报
回复
引用 2 楼 u013034386 的回复:
[quote=引用 1 楼 worldy 的回复:] 还能画线画到窗口外?教教我
SetCapture就可以了 暂时只想到算交点的方法,这个交点算起来还真挺麻烦[/quote] 小窗口里面的线是根据大窗口计算的? 可以考虑控制大窗口呐,在相应消息是判断画出的线是否超出指定区域,超出就不进行画线操作
rootkit_ole 2013-12-12
  • 打赏
  • 举报
回复
引用 1 楼 worldy 的回复:
还能画线画到窗口外?教教我
SetCapture就可以了 暂时只想到算交点的方法,这个交点算起来还真挺麻烦
worldy 2013-12-12
  • 打赏
  • 举报
回复
还能画线画到窗口外?教教我
1) 如果整条直线完全在窗口之内。此时,不需剪裁,显示整条直线,简称“取”之。 2) 如果整条直线明显在窗口,此时,不需剪裁,不显示直线。简称“弃”之。 3) 如果部分直线窗口之内,部分在窗口。此时,需要求出直线与窗框之交点,并将窗口直线部分剪裁掉,显示窗口内的部分。 图2-1多边形裁剪区域编码 图2-2线段裁剪 为使计算机能够快速判断一条直线段窗口属何种关系,采用如下编码方法。延长窗口的边,把未经裁剪的图形区域分成九个区,如图2-1所示。每个区具有一个四位代码,即四位二进制数,从左到右各位依次表示上、下、右、左。裁剪一条线段(如图2-2)时,先求出端点P1P2所在的区号code1和code2。若code1=0, 且code2=0,则说明线段P1P2均在窗口内,那么整条线段也必在窗口内,应取之。 若code1和code2经按位与运算后的结果code1&code2≠ 0,则说明两个端点同在窗口的上方、下方、左方或右方。在这种情况下,可判断线段完全在窗口,可弃之。 如果上述两种条件均不成立,则按第三种情况处理。求出线段窗口某边的交点,在交点处把线段一分为二,其中必有一段完全在窗口,可弃之。再对另一段重复上述处理。 在实现本算法时,不必把线段与每条窗口边界依次求交,只要按顺序检测到端点的编码不为0,才把线段与对应的窗口边界求交。

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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