我学习delphi不久,有个问题请教:
如何实现拖动鼠标来选择图像上的一块区域,如矩形区域
就是拖动鼠标,动态的画一矩形

解决方案 »

  1.   

    在mousedown里记录一下鼠标的坐标为全局变量bx,by
    在Mousemove里//重绘原画布
    canvas.Rectangle(bx,by,x,y);
      

  2.   

    implementation
    var
      BeginX,BeginY:integer;//全局变量 记录鼠标按下时的X,Y坐标
    {$R *.dfm}procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      BeginX:=X;BeginY:=Y;//记录鼠标按下时的X,Y坐标
    end;
    procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
    //下面代码演示的是背景为纯色时的选取框.
    //选取的范围可记录在一个TRECT变量里.具体情况视要求而定.
    //当背影为图形时..可以把注释1之间的代码替换为重绘背景的代码
      if ssLeft in shift then//判断鼠标左键是下按着.
      begin
        //1
        Canvas.Brush.Color:=RGB(255,255,255);
        Canvas.Brush.Style:=bsSolid;
        Canvas.FillRect(RECT(0,0,width,height));
        //1
        Canvas.Brush.Style:=bsClear;
        Canvas.Pen.Style:=psDot;
        Canvas.Rectangle(BeginX,BeginY,X,Y);
      end;
    end;
    end.