由shape控件得到Rgn(2000/11/21 三金 版权所有

由shape控件得到Rgn(2000/11/21 三金 版权所有

如有问题,请参考VCL库shape组件源代码
function GetShapeRgn(shape:TShape):HRgn;
var
X, Y, W, H, S: Integer;
ret:HRgn;
begin
    result:=0;
    X :=shape.left+shape.Pen.Width div 2;
    Y :=shape.top+shape.Pen.Width div 2 ;
    W :=shape.Width- shape.Pen.Width + 1;
    H :=shape.Height-shape.Pen.Width + 1;
    if shape.Pen.Width = 0 then
    begin
      Dec(W);
      Dec(H);
    end;
    if W < H then S := W else S := H;
    if shape.Shape in [stSquare, stRoundSquare, stCircle] then
    begin
      Inc(X, (W - S) div 2); //得到新的X值
      Inc(Y, (H - S) div 2); //得到新的Y值
      W := S;
      H := S;
    end;
    case shape.Shape of
      stRectangle, stSquare:
        begin
            ret:=CreateRectRgn(X, Y, X + W, Y + H);
            if ret=null then
                result:=0
            else
                result:=ret;
        end;
      stRoundRect, stRoundSquare:
        begin
            ret:=CreateRoundRectRgn(X, Y, X + W, Y + H, S div 4, S div 4);
            if ret=null then
                result:=0
            else
                result:=ret;
        end;
      stCircle, stEllipse:
        begin
            ret:=CreateEllipticRgn(X, Y, X + W, Y + H);
            if ret=null then
                result:=0
            else
                result:=ret;
        end;
    end;
end;
 

更好更多文章尽在三金主页-天铭心草堂
http://vip.6to23.com/tianmingxin
  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

sanjin

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值