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

2008-04-09 04:28:11来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

由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

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Delphi.NET previewed at SD West

下一篇:《Delphi高手突破》第0章(预览版)——关于本书