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

王朝delphi·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

由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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航