在MouseMove中根据Mouse移动给线,并且同步显示到另一个控件上,此时显示到另一个控件上的变成了虚线,因为MouseMove消息为丢掉一些,如何解决这个上情况?

解决方案 »

  1.   

    不可能把每个点都取到吧
    画的时候不要设置pixel
    用lineto画过去,这样都连起来了
      

  2.   

    lineTo是可以画出来,但是我还要保存画过的每个像素点的颜色值啊,就必须知道每个点啊
      

  3.   

    通过计算,获取两点之前存在的点
    OnMouseDown
      oldx := x; oldy := y;
    OnMouseMove 事件里这样判断
    var xVal,yVal,n,i : integer;
    begin
       xVal:= abs(x1-x2);yVal:= abs(y1-y2);
       n := max(xVal,yVal);
       for i := 1 to n do
       begin
        dx :=  oldx + Round((X -oldx) *i / n);
        dy :=  oldy + Round((y - oldy) * i / n);
       end;
       oldx := X; oldy := y;
    end;
    那,dx,dy就是你要的点...... 
    这样,你移动再快,也能算出这些断点之间的所有的点.....
      

  4.   

    上面这个算法是不是和lineto一样啊
      

  5.   

    不知道,没研究过lineto的算法,
      

  6.   

    to  mdejtod
    X1,X2,Y1,Y2是什么变量,算法有点迷糊
      

  7.   

    那是,网上可COPY不到的,这是我在做特效画笔时搞出来的,不然会断点,.....
      

  8.   

    写算法不容易啊, mdejtod好样的。