制作放两个小图片的按钮 - 回复 xhui 的问题
生活随笔
收集整理的這篇文章主要介紹了
制作放两个小图片的按钮 - 回复 xhui 的问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
為什么80%的碼農都做不了架構師?>>> ??
問題來源: http://www.cnblogs.com/del/archive/2009/03/12/1409708.html#1475240
本例效果圖:
自定義的類(TMyButton):
unit Unit2;interfaceusesWindows, Messages, Classes, Graphics, StdCtrls;typeTMyButton = class(TButton)privateFBit1,FBit2: TBitmap;protectedprocedure WMPaint(var Message: TWMPaint); message WM_PAINT;publicconstructor Create(AOwner: TComponent); override;destructor Destroy; override;procedure Click; override;end;implementation{ TMyButton }procedure TMyButton.Click; begininherited;MessageBox(0, 'MyButton', 'Hi', MB_OK); end;constructor TMyButton.Create(AOwner: TComponent); varwh: Integer; begininherited;FBit1 := TBitmap.Create;FBit2 := TBitmap.Create;//在此可以載入圖片, 為了測試方便, 我隨便畫兩個矩形吧wh := Height - 8;FBit1.SetSize(wh, wh);FBit2.SetSize(wh, wh);FBit1.Canvas.Brush.Color := clRed;FBit1.Canvas.Rectangle(0, 0, wh, wh);FBit2.Canvas.Brush.Color := clLime;FBit2.Canvas.Rectangle(0, 0, wh, wh); end;destructor TMyButton.Destroy; beginFBit1.Free;FBit2.Free;inherited; end;procedure TMyButton.WMPaint(var Message: TWMPaint); varcvs: TCanvas;DC: HDC; beginInherited;DC := GetDC(Handle);cvs := TCanvas.Create;cvs.Handle := DC;cvs.Draw(4, (Height - FBit2.Height) div 2, FBit1);cvs.Draw(Width - FBit2.Width - 4, (Height - FBit2.Height) div 2, FBit2);cvs.Free;ReleaseDC(Handle, DC); end;end.
測試代碼:
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;procedure Button1Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}uses Unit2;procedure TForm1.Button1Click(Sender: TObject); beginwith TMyButton.Create(Self) do beginParent := Self;Left := Random(Self.ClientWidth - Width);Top := Random(Self.ClientHeight - Height);end; end;end.
轉載于:https://my.oschina.net/hermer/blog/319302
總結
以上是生活随笔為你收集整理的制作放两个小图片的按钮 - 回复 xhui 的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Final Michael Scofie
- 下一篇: 唤醒控件曾经拥有的能力