我要把当在界面上按下鼠标左键括起来,就向我们在桌面上按下鼠标左键一样,这种效果应该如何实现呀,如果知情,多谢指导。
在原来的位置再重画一次
你在OnMouseUp事件里canvas.Rectangle(x1,y1,x2,y2)
就可以得到最后画的框了
GetCursorPos
Canvas.FillRect(Canvas.ClipRect)不行?
我用着好好的啊
在你onmousedown的事件里调用的,把以前的清掉
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
oldx,oldy,ox,oy:word;
started:boolean;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
oldx:=x;
oldy:=y;
ox:=x;
oy:=y;
started:=true;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if started then
begin
form1.Canvas.Brush.Style:=bsclear;
form1.Canvas.Rectangle(ox,oy,x,y);
form1.Canvas.Rectangle(ox,oy,oldx,oldy);
oldx:=x;
oldy:=y;
end;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
started:=false;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
form1.Canvas.Pen.Mode:=pmNot;
end;
end.