我的程序上有个控件是没有CANVAS对象的
但是我想在其上面画一条斜线
求代码!
最好是实现到鼠标在上面移动就有一条线跟着走
谢谢!!

解决方案 »

  1.   

    var
      DC : HDC;procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      LineTo(DC, x, y);
    end;procedure TForm1.FormShow(Sender: TObject);
    begin
      DC := GetDC(Button1.Handle);
    end;
      

  2.   

    鼠标移动就有一条线在上面跟着走......
    var
      DC : HDC;procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      Button1.Refresh;//简单地使用Refresh吧
      MoveToEx(DC, 0, 0, nil);
      LineTo(DC, x, y);
    end;procedure TForm1.FormShow(Sender: TObject);
    begin
      DC := GetDC(Button1.Handle);
    end;
      

  3.   

    TO lihuasoft(坐井观天)
    能用其他方法代替Button1.Refresh吗?最好是释放了LINE的对象。而且我还想把线的样式设置为虚线呢?请问方法是什么呢??在线等解决了再加分!
      

  4.   

    这个, 好象可以用SetRop2函数, 把原先的线画掉. 例如这样:var
      DC : HDC;
      xOld, yOld : integer;procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      MoveToEx(DC, 0, 0, nil);
      LineTo(DC, xOld, yOld);
      MoveToEx(DC, 0, 0, nil);
      LineTo(DC, x, y);
      xOld := x;
      yOld := y;
    end;procedure TForm1.FormShow(Sender: TObject);
    begin
      DC := GetDC(Button1.Handle);
      SetRop2(DC, R2_NOT);
    end;
    但效果并不是很好. 设置PenStyle是虚线的API函数, 我没找到.  既然已结贴,你就另开贴问别人吧. Sorry