Delphi

本类阅读TOP10

·分布式网络考试系统原型分析及实现
·游戏外挂设计技术探讨①
·使用HOOK随心监视Windows
·Delphi 水晶报表打包解决
·试题库开发中非文本数据的处理
·如何将几个DBGRID里的内容导入同一个EXCEL表中....的问题
·如何使用Delphi设计强大的服务器程序
·工人线程中关闭窗体的实现
·用DLL方式封装MDI子窗体。
·支持XP下托盘栏气球提示的托盘单元

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
由shape控件得到Rgn(2000/11/21 三金 版权所有

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

由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



相关文章

相关软件