Delphi控件开发(四)双击头像切换
2016-11-18 本文已影响0人
风语007
bit := TBitmap.Create;
bit.LoadFromFile('d:\vcl\aa.bmp');
StretchBlt(Canvas.Handle,0,0,100,100,bit.Canvas.Handle,0,0,bit.Width,bit.Height,SRCCOPY );
unit Myhead;
interface
uses
Windows, SysUtils, Classes, Controls, Graphics, jpeg;
type
TMyhead = class(TCustomControl)
private
{ Private declarations }
FIsOn: Boolean;
FPicOn: TJPEGImage;
FPicOff: TJPEGImage;
procedure SetIsOn(const Value: Boolean);
protected
{ Protected declarations }
procedure Paint;override;
procedure Click;override;
public
{ Public declarations }
constructor Create(A: TComponent);override;
destructor Destroy;override;
published
{ Published declarations }
property IsOn: Boolean read FIsOn write SetIsOn;
property Width;
property Height;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TMyhead]);
end;
{ TMyhead }
procedure TMyhead.Click;
begin
IsOn := not FIsOn;
inherited;
end;
constructor TMyhead.Create(A: TComponent);
begin
inherited Create(A);
FPicOn := TJPEGImage.Create;
FPicOn.LoadFromFile('d:\vcl\aa.jpg');
FPicOff := TJPEGImage.Create;
FPicOff.LoadFromFile('d:\vcl\b.jpg');
end;
destructor TMyhead.Destroy;
begin
FPicOn.Free;
FPicOff.Free;
inherited Destroy;
end;
procedure TMyhead.Paint;
begin
inherited;
if FIsOn then
begin
Canvas.StretchDraw(Rect(0,0,Width,Height), FPicOn);
end
else
begin
Canvas.StretchDraw(Rect(0,0,Width,Height), FPicOff);
end;
end;
procedure TMyhead.SetIsOn(const Value: Boolean);
begin
FIsOn := Value;
Invalidate;
end;
end.