关于image 和图像(50分)

  • 主题发起人 主题发起人 chenliyan163
  • 开始时间 开始时间
C

chenliyan163

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一个form中放了一个image控件,怎么写程序,把里面的图像清空,
还有,当鼠标按下时拖动时,在image上产生下个虚线筐(虚线筐:随鼠标拖动的大小,就像在delphi窗体上按下鼠标拖动时会产生一个虚线筐)
 
Image.Picture.Graphic:=Nil;
可以参考DrawFocus,第一次画是虚线框,再在原位置重画一次还原
 
第一个问题:Image.Picture := nil
问题2:Image.Picture.Canvas.DrawFocusRect(一个TRect参数);
 
大哥们:
第二个问题是否可以说得详细点,Image.Picture.Canvas.DrawFocusRect(一个TRect参数);这句话是不是写在OnMousedown中呀,还有这里的TRect参数是怎么定义的,谢谢大哥们
 
TRect是一个类型,有四个属性:top,left,right,bottom,可以这样用:
var
aRect:TRect;
begin
...
aRect.top:=0;
aRect.left:=0;
aRect.right:=100;
aRect.bottom:=200;
...
end;
 
我在上面说的那个虚线筐跟下面这个程序中产生的虚线筐一样,只是下面的程序是对窗体(form),而我要在image中的,哥哥们帮我在程序中改改好吗?

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;

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);
private
Capturing : bool;
Captured : bool;
StartPlace : TPoint;
EndPlace : TPoint;

{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
function MakeRect(Pt1 : TPoint;Pt2 : TPoint) : TRect;
begin
if pt1.x < pt2.x then
begin
Result.Left := pt1.x;
Result.Right := pt2.x;
end
else
begin
Result.Left := pt2.x;
Result.Right := pt1.x;
end;
if pt1.y < pt2.y then
begin
Result.Top := pt1.y;
Result.Bottom := pt2.y;
end
else
begin
Result.Top := pt2.y;
Result.Bottom := pt1.y;
end;
end;




procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Captured then
DrawFocusRect(Form1.Canvas.Handle,MakeRect(StartPlace,EndPlace));
StartPlace.x := X;
StartPlace.y := Y;
EndPlace.x := X;
EndPlace.y := Y;
DrawFocusRect(Form1.Canvas.Handle,MakeRect(StartPlace,EndPlace));
Capturing := true;
Captured := true;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Capturing then
begin
DrawFocusRect(Form1.Canvas.Handle,MakeRect(StartPlace,EndPlace));
EndPlace.x := X;
EndPlace.y := Y;
DrawFocusRect(Form1.Canvas.Handle,MakeRect(StartPlace,EndPlace));
end;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Capturing := false;
end;

end.
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
825
DelphiTeacher的专栏
D
D
回复
0
查看
769
DelphiTeacher的专栏
D
后退
顶部