CSDN博客

img sanjin

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

发表于2002/12/2 9:42:00  836人阅读

由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

相关博文

我的热门文章

img
取 消
img