定义全局变量 LeftTop,RightButtom : TPoint;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
LeftTop := Point(x,y);
end; procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
RightButtom := Point(x,y);
Image1.Canvas.Brush.Color := clBlack;
Image1.Canvas.FrameRect(Rect(LeftTop,RightButtom));
end;
我这样作了以后,可以画框了,但是 只能鼠标左键弹起的时候画图,而且这个框是一直存在的,我的目的是:鼠标按住拖动的时候,会有一个矩形框显示,鼠标左键弹起的时候,画的框就消失,应该在MOVE中怎么改 用image控件的话只能调入bmp图,如果是JPG的话,在用canvas时会出错,这个又该如何解决.
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
LeftTop := Point(x,y);
end; procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
RightButtom := Point(x,y);
Image1.Canvas.Brush.Color := clBlack;
Image1.Canvas.FrameRect(Rect(LeftTop,RightButtom));
end;
我这样作了以后,可以画框了,但是 只能鼠标左键弹起的时候画图,而且这个框是一直存在的,我的目的是:鼠标按住拖动的时候,会有一个矩形框显示,鼠标左键弹起的时候,画的框就消失,应该在MOVE中怎么改 用image控件的话只能调入bmp图,如果是JPG的话,在用canvas时会出错,这个又该如何解决.
解决方案 »
- 这样的语句应该怎么写
- InstallShield for delphi怎么用
- 请问如何实现像电视右上角的时钟显示?
- 如何禁止WebBrowser控件中浏览网页时弹出JS对话框?
- 正确看待《Delphi高手突破》最后一章的实例 - 很久没提笔了。。。
- 怎么把数据库的内容怎么打印出来,一页显示不了时要分页(给代码)
- 资料性问题:那位有WM_MESSAGE 对照表?
- 怎样在DELPHI中对系统的服务进行操作?
- 这样的提示该如何解决 Selected Collating Sequence not supported by the operating system
- 在自定义的函数中不能有组件存在吗?
- delphi内部函数move的分析
- 得到JPG图像的象素位置(图片真实点坐标)
例子是在form上画,如果在image1上画也是可以的,image1.canvas.DrawFocusRect(); 第一次画框,第二次同位置画就会异或掉
关键在move中
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;type
Tform1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); private
{ Private declarations }
public
{ Public declarations }
end;var
form1: Tform1;
fdragging:boolean;
frect:Trect;
x1,y1:integer;
implementation{$R *.DFM}procedure Tform1.FormCreate(Sender: TObject);
begin
fdragging:=false;
end;procedure Tform1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button=mbleft then
begin
fdragging:=true;
frect.Left:=x;
frect.Top:=y;
frect.BottomRight:=frect.TopLeft;
canvas.DrawFocusRect(frect);
x1:=x;y1:=y;
end;end;
procedure Tform1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
fdragging:=false;
canvas.DrawFocusRect(frect);
end;
procedure Tform1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if fdragging then
begin
canvas.DrawFocusRect(frect);
if x1>x then
begin
frect.left:=x;
frect.Right:=x1;
end
else
begin
frect.left:=x1;
frect.right:=x;
end;
if y1>y then
begin
frect.top:=y;
frect.Bottom:=y1;
end
else
begin
frect.top:=y1;
frect.bottom:=y;
end;
canvas.DrawFocusRect(frect);
end;
end;end.