图像小问题,高手请进……在线急等之!!!(20分)

  • 主题发起人 主题发起人 lcmlhs
  • 开始时间 开始时间
L

lcmlhs

Unregistered / Unconfirmed
GUEST, unregistred user!
在Timage控件里放置一个图像image1,当鼠标移动到该图像控件上时,变成图像image2,
image1和image2两图像只有边线不同,其它一样。
以此达到按钮变色效果,请高手指点怎么实现???在线急等之……
 
问题: 求好用的位图按钮 ( 积分: 20 )
分类: 控件 - 使用

来自: caochen, 时间: 2003-06-17 17:10:00, ID: 1959780
可以设置几个图片,按下时一种状态,放开时一种状态,有没有好用的,谢谢

来自: fz97534, 时间: 2003-06-17 17:52:00, ID: 1959983
给你个 自己做
---------------------------------
{ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
* 加载图象的控件 两张图片 轮流显示
* 20030618 符林
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo}
unit uImageBtn;

interface

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

type
TImageBtn = class(TImage)
private
{ Private declarations }
FOnMouseEnter: TNotifyEvent;
FOnMouseExit: TNotifyEvent;
FInsideButton:Boolean;
FPicture1,FPicture2:TPicture;
Procedure CMMMouseEnter(var Msg:TMessage);Message CM_MouseEnter;
Procedure CMMMouseLeave(var Msg:TMessage);Message CM_MouseLeave;

Procedure SetPicture1(Picture1:TPicture);
Procedure SetPicture2(Picture2:TPicture);

protected
{ Protected declarations }
public
{ Public declarations }
Constructor Create(AOwner:TComponent);override;
destructor Destroy;Override;
published
Property OnMouseEnter:TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
Property OnMouseExit:TNotifyEvent read FOnMouseExit write FOnMouseExit;
Property Picture1:TPicture read FPicture1 write SetPicture1;
Property Picture2:TPicture read FPicture2 write SetPicture2;
{ Published declarations }
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('任富', [TImageBtn]);
end;

{ TImageBtn }
{oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo}
constructor TImageBtn.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FInsideButton:=False;
FPicture1:=TPicture.Create;
FPicture2:=TPicture.Create;
Picture:=Picture1;
end;

destructor TImageBtn.Destroy;
begin
FPicture1.Free;
FPicture2.Free;
Picture.Graphic:=nil;
inherited Destroy;
end;

procedure TImageBtn.CMMMouseEnter(var Msg: TMessage);
begin
if FInsideButton then Exit
else FInsideButton:=True;

if Assigned(FOnMouseEnter) then FOnMouseEnter(Self);

Picture:=Picture2;
end;

procedure TImageBtn.CMMMouseLeave(var Msg: TMessage);
begin
if FInsideButton then FInsideButton:=False
else Exit;

if Assigned(FOnMouseExit) then FOnMouseExit(Self);

Picture:=Picture1;
end;

procedure TImageBtn.SetPicture1(Picture1: TPicture);
begin
FPicture1.Assign(Picture1);
Picture:=Picture1;
end;

procedure TImageBtn.SetPicture2(Picture2: TPicture);
begin
FPicture2.Assign(Picture2);
Picture:=Picture2;
end;

end.

来自: zealothasu, 时间: 2003-06-17 21:31:00, ID: 1960461
用toolbar不行吗?

来自: caochen, 时间: 2003-06-20 17:38:00, ID: 1969118
接受答案了.

得分大富翁: fz97534
 
一般就是替换整个image

你可以写一个增强型image控件,添加一个onmousemove 的picture 设置属性

即可
我也这样写过,效果还好了
 
个人认为替换整个image是最简单的处理办法.
 
好了,谢谢大家!!分分啦
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
872
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部