首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

panel下动态增加多个image控件。并且可以随意拖动图片位置?

2013-01-04 
panel上动态增加多个image控件。并且可以随意拖动图片位置??panel上动态增加多个image控件。并且可以随意拖

panel上动态增加多个image控件。并且可以随意拖动图片位置??
panel上动态增加多个image控件。并且可以随意拖动图片位置??
[解决办法]
坛子里有过这个问题,搜一下吧
基本思想就是,自己写鼠标事件(move,down之类的),创建image时,将自己的事件赋予image的鼠标事件
[解决办法]
自已再修改:


type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    procedure ImageMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure ImageMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    //procedure ImageMouseUp(Sender: TObject; Button: TMouseButton;
    //  Shift: TShiftState; X, Y: Integer);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

var
  OldX, OldY: Integer;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  img1, img2: TImage;
begin
  Panel1.DoubleBuffered := True;

  img1 := TImage.Create(Self);
  img1.Parent := Panel1;
  img1.OnMouseDown := OnMouseDown;
  img1.OnMouseMove := ImageMouseMove;
  img1.Picture.LoadFromFile('d:\1.jpg');

  img2 := TImage.Create(Self);
  img2.Parent := Panel1;
  img2.OnMouseDown := OnMouseDown;
  img2.OnMouseMove := ImageMouseMove;
  img2.Picture.LoadFromFile('d:\2.jpg');
  img2.Left := 400;
end;

procedure TForm1.ImageMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  OldX := TImage(Sender).Left;
  OldY := TImage(Sender).Top;
end;

procedure TForm1.ImageMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  Caption := Format('X: %d, Y: %d', [X, Y]);
  if ssLeft in Shift then
  begin
    with TImage(Sender) do
    begin
      Left := Left + ClientToScreen(Point(X, Y)).X - ClientToScreen(Point(OldX, OldY)).X;
      Top := Top + ClientToScreen(Point(X, Y)).Y - ClientToScreen(Point(OldX, OldY)).Y;
    end;
  end;
end;

[解决办法]
用 ImageEN 控件不好吗?

热点排行