动态创建一个鼠标指针图案

function CircleCursor(// 创建一个圆形的鼠标图案
  AColor: TColor;// 指定圆形的颜色
  ASize: Integer // 指定圆形的直径
): HCursor;// 返回鼠标图案句柄
var
  vBitmapMask: TBitmap;
  vBitmapColor: TBitmap;
  vIconInfo: TIconInfo;
begin
  vBitmapMask := TBitmap.Create;
  vBitmapColor := TBitmap.Create;
  try
    vBitmapMask.PixelFormat := pf24bit;
    vBitmapColor.PixelFormat := pf24bit;
 
    vBitmapMask.Width := 32;
    vBitmapMask.Height := 32;
    vBitmapMask.Canvas.Brush.Color := clWhite;
    vBitmapMask.Canvas.FillRect(Rect(0,0,32,32));
    vBitmapMask.Canvas.Brush.Color := clBlack;
    vBitmapMask.Canvas.Ellipse(0,0, ASize, ASize);
 
    vBitmapColor.Width := 32;
    vBitmapColor.Height := 32;
    vBitmapColor.Canvas.Brush.Color := clBlack;
    vBitmapColor.Canvas.FillRect(Rect(0,0,32,32));
    vBitmapColor.Canvas.Pen.Color := AColor;
    vBitmapColor.Canvas.Brush.Color := AColor;
    vBitmapColor.Canvas.Ellipse(0,0, ASize, ASize);
 
    vIconInfo.fIcon := True;
    vIconInfo.xHotspot := ASize div 2;
    vIconInfo.yHotspot := ASize div 2;
    vIconInfo.hbmMask := vBitmapMask.Handle;
    vIconInfo.hbmColor := vBitmapColor.Handle;
    Result := CreateIconIndirect(vIconInfo);
  finally
    vBitmapMask.Free;
    vBitmapColor.Free;
  end;
end;{ CircleCursor }
 
const
  crMyCursor = 5;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  Screen.Cursors[crMyCursor] := CircleCursor(clRed,16);
  Screen.Cursor := crMyCursor;
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
  DestroyIcon(Screen.Cursors[crMyCursor]);
  Screen.Cursors[crMyCursor] := 0;
end;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值