動態調整 TBitBtn 上的圖片 – 回複 “遊戲而已” 的問題

來源:互聯網
上載者:User
問題來源:http://www.cnblogs.com/del/archive/2011/02/11/1951641.html#2025348
測試圖片:

測試代碼:

unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, Buttons;type  TForm1 = class(TForm)    BitBtn1: TBitBtn;    procedure FormCreate(Sender: TObject);    procedure FormDestroy(Sender: TObject);    procedure BitBtn1MouseLeave(Sender: TObject);    procedure BitBtn1MouseEnter(Sender: TObject);    procedure BitBtn1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);    procedure BitBtn1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);  private    procedure ChangeBitmap(Sender: TObject);  public  end;var  Form1: TForm1;implementation{$R *.dfm}uses jpeg;const picPath = 'C:\Temp\btn_sys_close.jpg';var  tag2: Integer = -1;  jpg: TJPEGImage;  bit: TBitmap;procedure TForm1.FormCreate(Sender: TObject);begin  if not FileExists(picPath) then begin beep; Application.Terminate; end;  jpg := TJPEGImage.Create;  jpg.LoadFromFile(picPath);  bit := TBitmap.Create;  bit.SetSize(jpg.Width div 3, jpg.Height);  BitBtn1.OnMouseLeave(BitBtn1);end;{被重複調用的過程}procedure TForm1.ChangeBitmap(Sender: TObject);begin  if tag2 = TControl(Sender).Tag then Exit;  tag2 := TControl(Sender).Tag;  bit.Canvas.Draw(-bit.Width * tag2, 0, jpg);  TBitBtn(Sender).Glyph := bit;end;procedure TForm1.BitBtn1MouseLeave(Sender: TObject);begin  TControl(Sender).Tag := 0;  ChangeBitmap(Sender);end;procedure TForm1.BitBtn1MouseEnter(Sender: TObject);begin  TControl(Sender).Tag := 1;  ChangeBitmap(Sender);end;procedure TForm1.BitBtn1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin  TControl(Sender).Tag := 2;  ChangeBitmap(Sender);end;procedure TForm1.BitBtn1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin  TControl(Sender).Tag := 1;  ChangeBitmap(Sender);end;procedure TForm1.FormDestroy(Sender: TObject);begin  jpg.Free;  bit.Free;end;end.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.