?? unitfrmmain.pas
字號:
unit unitFrmMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure ShowTy(Canvas: TCanvas; bmp: TBitmap; rect: TRect);
//參數說明:
//Canvas : 窗口的Canvas;
//bmp : 待顯示的位圖;
//rect : 顯示區域
var
i, a, b, x0, y0, x, y: Integer;
d: Extended;
r: TRect;
TmpBmp: TBitmap;
begin
a := (rect.right - rect.left) div 2; //橢圓橫軸
b := (rect.bottom - rect.top) div 2; //橢圓縱軸
x0 := rect.Left + a; //橢圓中心
y0 := rect.Top + b; //
r.Left := 0;
r.Top := 0;
r.Right := 2 * a;
r.Bottom := 2 * b;
TmpBmp := TBitmap.Create; //建立相同大小的內存位圖
TmpBmp.Width := 2 * a;
TmpBmp.Height := 2 * b;
TmpBmp.Canvas.Brush.Color := clBlack; //涂黑
TmpBmp.Canvas.FillRect(r);
TmpBmp.Canvas.Brush.Color := clWhite;
for i := 1 to 36 do
begin
d := i / 18 * 3.1415926;
sleep(15);
x := x0 + Round(a * Cos(d));
y := y0 - Round(b * Sin(d));
//用白色畫扇形
if (i = 36) then
TmpBmp.Canvas.Ellipse(x0 - a, y0 - b, x0 + a, y0 + b)
else
TmpBmp.Canvas.Pie(x0 - a, y0 - b, x0 + a, y0 + b, x0 + a, y0, x, y);
TmpBmp.Canvas.CopyMode := cmSrcAnd;
// TmpBmp.Canvas.CopyMode :=cmSrcErase;
//顯示位圖的扇形區域
TmpBmp.Canvas.CopyRect(r, bmp.Canvas, r);
Canvas.CopyRect(rect, TmpBmp.Canvas, r);
end;
TmpBmp.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowTy(Form1.Canvas, Image1.Picture.Bitmap, Image1.Picture.Bitmap.Canvas.ClipRect)
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -