Saat Anda mengisi property Glyph pada TBitBtn, misalnya, dengan suatu bitmap dan mendisable TBitBtn tersebut, maka bitmap yang tampil pada TBitBtn akan berwarna abu-abu. Itulah yang disebut disabled bitmap.
Jika Anda ingin membuat suatu disabled bitmap pada suatu TImage, Anda dapat menggunakan prosedur CreateDisabledBitmap.
procedure CreateDisabledBitmap(Source, Destination: TBitmap);
Prosedur CreateDisabledBitmap mempunyai dua parameter. Parameter pertama merupakan bitmap asal (gambar asli sebagai acuan gambar untuk diterapkan efek disabled) sedangkan parameter kedua merupakan bitmap tujuan yang akan digunakan untuk menampilkan disabled bitmap.
Agar lebih mudah memahami, mari kita mencobanya secara langsung. Buatlah sebuah proyek baru dan tambahkan dua buah komponen TImage. Pada TImage pertama, isi property Picture dengan sebuah bitmap (*.bmp). Tambahkan komponen TButton untuk meletakkan kode untuk memanggil prosedur yang akan menerapkan efek disabled.
Kode selengkapnya untuk membuat disabled bitmap adalah sebagai berikut:
unit UMain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls; type TFrmDisableBitmap = class(TForm) Image1: TImage; Image2: TImage; BitBtn1: TBitBtn; Label1: TLabel; Label2: TLabel; procedure BitBtn1Click(Sender: TObject); private { Private declarations } procedure CreateDisabledBitmap(Source, Destination: TBitmap); public { Public declarations } end; var FrmDisableBitmap: TFrmDisableBitmap; implementation {$R *.dfm} procedure TFrmDisableBitmap.BitBtn1Click(Sender: TObject); var Destination: TBitmap; begin Destination:= TBitmap.Create; try CreateDisabledBitmap(Image1.Picture.Bitmap, Destination); Image2.Picture.Bitmap.Assign(Destination); finally Destination.Free; end; end; procedure TFrmDisableBitmap.CreateDisabledBitmap(Source, Destination: TBitmap); const ROP_DSPDxax = $00E20746; var DDB, MonoBmp: TBitmap; IWidth, IHeight: Integer; IRect: TRect; begin IWidth:= Source.Width; IHeight:= Source.Height; Destination.Width:= IWidth; Destination.Height:= IHeight; IRect:= Rect(0, 0, IWidth, IHeight); Destination.Canvas.Brush.Color:= clBtnFace; Destination.Palette:= CopyPalette(Source.Palette); MonoBmp:= Nil; DDB:= Nil; try MonoBmp:= TBitmap.Create; DDB:= TBitmap.Create; DDB.Assign(Source); DDB.HandleType:= bmDDB; with MonoBmp do begin Assign(Source); HandleType:= bmDDB; Canvas.Brush.Color:= clBlack; Width:= IWidth; if Monochrome then begin Canvas.Font.Color:= clWhite; Monochrome:= False; Canvas.Brush.Color:= clWhite; end; Monochrome:= True; end; with Destination.Canvas do begin Brush.Color:= clBtnFace; FillRect(IRect); Brush.Color:= clBtnHighlight; SetTextColor(Handle, clBlack); SetBkColor(Handle, clWhite); BitBlt(Handle, 1, 1, IWidth, IHeight, MonoBmp.Canvas.Handle, 0, 0, ROP_DSPDxax); Brush.Color:= clBtnShadow; SetTextColor(Handle, clBlack); SetBkColor(Handle, clWhite); BitBlt(Handle, 0, 0, IWidth, IHeight, MonoBmp.Canvas.Handle, 0, 0, ROP_DSPDxax); end; finally DDB.Free; MonoBmp.Free; end; Source.Dormant; end; end.
Anda bebas menyalin kode di atas serta mengembangkannya untuk keperluan Anda. Semoga bermanfaat. Salam.
Comments
Post a Comment