如何实现按住shift键画水平直线和垂直直线呢,我实现的结果是只能画水平的或者垂直的。如何灵活画呢,没有思路,求高手给个思路,就是想实现类似画图里面的直线功能。给个思路或者代码均可。

解决方案 »

  1.   

    我实现的结果是只能画水平的或者垂直的(在画线时判断如shift按下,就从移动的起始点,到光标当前垂直的点。)你不是已经实现了吗?
      

  2.   

    我倒,你仔细观察下画图板的画直线功能,他是计算起始点的夹角在45的哪一侧?也就是|y1-y2|<|x1-x2|,画水平线
    |y1-y2|>|x1-x2|,画垂直线
    |y1-y2|=|x1-x2|,画45度直线
      

  3.   

    原理
    point pt1,pt2;
    bool isdown=false;onmousedown(......)
    {
       pt1=当前点
       isdown=true;
    }onmousemove(.......)
    {
      if(isdown)
      {
         pt2=当前点
         panel1.Invalidate()
      }
    }
    onmouseup(......)
    {
       isdown=false;
    }panel1的onpaint事件中
    {
    //|y1-y2|<|x1-x2|,画水平线
    //|y1-y2|>|x1-x2|,画垂直线
    //|y1-y2|=|x1-x2|,画45度直线
    }
      

  4.   

    感谢mngzilin,我原先是判断两个点的y坐标是否相同,或者x坐标是否相同,所以才导致只能画水平或者垂直直线。而你所的方法可以解决同时灵活画。