类似的技巧在详细一点的Delphi书中都应介绍,这是最基本的图形制作问题。对你的具体问题,步骤可以如下:1。先要设置一个boolean变量Md,Md真,表示mouse已Down(压下);
   再设一个整形变量xcur代表垂线的当前位置;
   先将xcur初值设置好,并用它来画好原始图,将Md设为false;2。利用图形组件的 OnMouseDown、OmouseUp、OnMouseMove 三个事件来实现你所需的拖动功能。3。对OnMouseDown、OmouseUp事件的编程很简单,前者就是记下Md为真,后者为记下Md为假。假设我们在Image1组件上作图,则程序为:
procedure TForm1.Image1MouseDown(Sender: TObject; Button:TMouseButton;  Shift: TShiftState; X, Y: Integer);
begin
  dn:=true;
end;procedure TForm1.Image1MouseUp(Sender: TObject; Button: MouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  dn:=false;
end;OnMouseMove 事件的响应程序,则要根据光标的移动位置来拆去原有的图形,在移动到的新位置上,画出新的图形。原来的位置由xcur指示,新位置则由过程中的形式参数告诉你。画好新位置上的图后,就将xcur的值改为x。这样,不断地擦线和画线,直到按键释放时位置。要注意的两点:
 *重画图前要判别Dn,只有在Dn为真时进行,因为这时鼠标键为压下,否则只是一般的光标移动。
 *擦线可以有两种办法:一种就是用背景色画线来实现拆线,另一种是将画笔的写入模式(pen.mode)设置为xor(pmXOR)方式。通常都采用后者,但在同一底色情况下,可采用前者。 不知我所讲的大体思想是否已清楚?剩下来的工作你着手了吗?