本例效果图:
代码文件:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) RadioGroup1: TRadioGroup; procedure FormPaint(Sender: TObject); procedure FormCreate(Sender: TObject); procedure RadioGroup1Click(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin RadioGroup1.Items.CommaText := 'TRANSPARENT,OPAQUE'; RadioGroup1.ItemIndex := 0; RadioGroup1.Columns := RadioGroup1.Items.Count; end; procedure TForm1.FormPaint(Sender: TObject); const str = 'Delphi 2007'; var x,y: Integer; begin Canvas.Font.Size := 36; Canvas.Font.Style := [fsBold]; x := (ClientWidth - Canvas.TextWidth(str)) div 2; y := (ClientHeight - Canvas.TextHeight(str)) div 4; Canvas.Pen.Color := clRed; Canvas.Brush.Color := clWhite; case RadioGroup1.ItemIndex of 0: SetBkMode(Canvas.Handle, TRANSPARENT); {透明模式} 1: SetBkMode(Canvas.Handle, OPAQUE); {非透明模式} end; {也可以用下面一句话代替上面的 case 语句} //SetBkMode(Canvas.Handle, RadioGroup1.ItemIndex + 1); BeginPath(Canvas.Handle); Canvas.TextOut(x, y, str); EndPath(Canvas.Handle); StrokeAndFillPath(Canvas.Handle); end; procedure TForm1.RadioGroup1Click(Sender: TObject); begin Repaint; end; end.