我现在是用MouseMove事件
当鼠标移到图片上时Image1.picture.assign(anotherBMP),
w问题有两点:
一是,会有闪烁,我想是因为鼠标在图片上时,总是触发该事件进行图片赋值。但不知道如何判断图片的相同
二是,当鼠标移开时,如何显示原来的图片

解决方案 »

  1.   

    我是用的两个TImage
    控制一个显示一个隐藏
      

  2.   

    同意楼上的,我原来是用一个控件TImageBtn,后来也是这个样子
      

  3.   

    用两个TImage时,如何知道鼠标移开,也就是什么时候使原来的图片visibleThanks
      

  4.   

    呵呵,我想到了,是不是在formmouseover中写代码
      

  5.   

    如果不是动态加Image的话!
    在Image1喝Image2中的onmousemove事件中各写一段代码就可以了!
    如果是动态加Image的话!
    那就要自己定义onmousemove事件,然后指向它就可以了!
      

  6.   

    同意楼上的。只要在IMAGE的ONMOUSEMOVE事件中控制即可
      

  7.   

    加个标志就可以了
    PictureChanged: Boolean;OnMouseMove只能获得鼠标进入的时刻,不能获取鼠标移出的时刻,
    可以处理CM_MOUSEENTER和CM_MOUSELEAVE消息
      

  8.   

    1。你的Image是在Form窗体下吗?如果是的话就在FormCreate事件中添加DoubleBuffered=true;如果不是在form窗体下就自己找一下句柄,不难找。
    2,在OnMouseMove事件中添加代码即可
      

  9.   

    自己重新继承一个timage
    unit Myimage;interfaceuses
      Windows, Messages, SysUtils, Classes, Controls, ExtCtrls;type
      TNewimage = class(TImage)
      private
        FOnMouseLeave: TNotifyEvent;
        FOnMouseEnter: TNotifyEvent;
        { Private declarations }
      protected
        { Protected declarations }
      public
        { Public declarations }
      published
        procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
        procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
        property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
        property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
        { Published declarations }
      end;procedure Register;implementationprocedure Register;
    begin
    //请自己修改
     RegisterComponents('Mydpk', [TNewimage]);
    end;{ timage1 }procedure TNewimage.CMMouseEnter(var Message: TMessage);
    begin
      inherited;
      if Assigned(FOnMouseEnter) then
        FOnMouseEnter(Self);
    end;procedure TNewimage.CMMouseLeave(var Message: TMessage);
    begin
      inherited;
      if Assigned(FOnMouseLeave) then
        FOnMouseLeave(Self);
    end;end.这是我刚刚写的控件,可以解决你的问题,加了两个属性
      

  10.   

    mousemove是不形的,楼上的方法说的很清楚了,当然也可以不做成控件,呵呵
      

  11.   

    能不能用IMAGELIST啊?只需要指定图片序号向后移就行了。