在一个image控件里已经放了一张图片,如果想在点击(image1click)后能在图片边框上显示一个亮框,应该怎么做?另外的方法也可以,只要是能让图片被点击后有一个明显的效果就行了,当然图片的大小内容都不能变,最好是像WINDOWS图标一样选中的效果!各位大大帮帮小弟好吗?

解决方案 »

  1.   

    很简单的问题呀,在 image的mousedown 和mousemove的事件中写入 代码,改image的图片有两府  只是forecolor 改变一下
      

  2.   

    在图片上放一个四方形的Shape
      

  3.   

    弄个panel在下边,点中的时候显示出来亮色彩的panel就可以啦
      

  4.   

    在image1click()事件中添加一段让边框变色或者有阴影的程序,在点击的时候就有这种效果了。
      

  5.   

    Shape1.Brush.Style := bsClear;
    Shape1.Visible := False;
    单击Image的时候:
    Shape1.Left := Image1.Left;
    Shape1.Top := Image1.Top;
    Shape1.Height := Image1.Height;
    Shape1.Width := Image1.Width;
    Shape1.Visible := True;
      

  6.   

    要注意控件摆放的次序,Shape最后放,或者最后Bring to front一下
    多个Image的话,可以共用一个Click事件,代码形式如下:
    Shape1.Left := TImage(Sender).Left;
    Shape1.Top := TImage(Sender).Top;
    Shape1.Height := TImage(Sender).Height;
    Shape1.Width := TImage(Sender).Width;
    Shape1.BringToFront;  //确保Shape显示在Image上面
    Shape1.Visible := True;
      

  7.   

    image1click()事件中添加处理程序,动一下脑筋就OK了
    自己要多想才会进步啊
      

  8.   

    回复人: luke5678(奇异) ( ) 信誉:100  2004-8-30 10:35:31  得分: 0  
     
     
       
    给个思路:准备2张图,一张为没有选中时的,一张为选中时的
    同意 偶就是这么做的  
     
      

  9.   

    效果明显莫过于关机了!!!(呵呵,开个玩笑)你可以把Image放在一个Panel上,然后用Panel的Bevel状态来指示Image是否被选中。
      

  10.   

    准备两幅图,在程序启动时载入一幅图,然后再image的mousedown事件中再给image载入一幅图。不就行了。
      

  11.   

    把点击的时候,把图像反色,加到Image1的Click事件里就行了。
    invertrect(Image1.Canvas.Handle,ClientRect);
      

  12.   

    cybercake(数字蛋糕) 的方法比较容易实现。
      

  13.   

    本人曾做过点击时改变图片的位置来达到所需的效果!在mouse的onclick时一个位置,upclick时为另一个位置!效果还不错哦!
      

  14.   

    2副图太浪费了,可以直接在Image上画个方框。
      

  15.   

    这个是一个我以前写的控件,可以达到你所要的效果!
    unit ImageButton;
    interface
    uses Classes, ExtCtrls, Graphics, Controls;
    type
      TImgBtn = class(TImage)
      private
        FPicture_Up: TPicture;
        FPicture_Down : TPicture;
      private
        procedure SetPicture_Up(Value: TPicture);
        procedure SetPicture_Down(Value: TPicture);
      protected
            procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
                X, Y: Integer); override;
            procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
                X, Y: Integer); override;
      public
        constructor Create(AOwner: TComponent); override;
        destructor  Destroy; override;
      published
        property Picture_Up  : TPicture read FPicture_Up   write SetPicture_Up;
        property Picture_Down: TPicture read FPicture_Down write SetPicture_Down;
      end;procedure Register;implementationprocedure Register;
    begin
      RegisterComponents('Additional', [TImgBtn]);
    end;{ TImgBtn }constructor TImgBtn.Create(AOwner: TComponent);
    begin
      inherited;
      AutoSize:= True;
      FPicture_Up:= TPicture.Create;
      FPicture_Down:= TPicture.Create;
    end;destructor TImgBtn.Destroy;
    begin
      FPicture_Up.Free;
      FPicture_Down.Free;
      inherited destroy;
    end;procedure TImgBtn.MouseDown(Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      Picture:= (FPicture_Down);
      inherited;
    end;procedure TImgBtn.MouseUp( Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      Picture:= (FPicture_Up);
      inherited;
    end;procedure TImgBtn.SetPicture_Down(Value: TPicture);
    begin
      FPicture_Down.Assign(Value);
    end;procedure TImgBtn.SetPicture_Up(Value: TPicture);
    begin
      FPicture_Up.Assign(Value);
      Picture:= (FPicture_Up);
    end;end.