⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unitfrmmain.pas

📁 里面包含有101种简易的Delphi源码
💻 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 + -