网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
DELPHI中利用API函数实现多态FORM
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式
Form)

    Button1: TButton;

    SpinEdit1: TSpinEdit;

    Panel1: TPanel;

    Button2: TButton;

    Button3: TButton;

    Button4: TButton;

   procedure DrawRndRectRegion(wnd : HWND; rect : TRect);

   procedure DrawEllipticRegion(wnd : HWND; rect : TRect);

   procedure DrawPolygonRegion(wnd : HWND; rect : TRect; NumPoints : Integer; DoStarShape : Boolean);

    procedure Button1Click(Sender: TObject);

    procedure Button4Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

   private

    { Private declarations }

     rgn : HRGN;

     rect : TRect;

   public

    { Public declarations }

   end;

  var

   Form1: TForm1;

  implementation

  {$R *.DFM}

   procedure TForm1.DrawRndRectRegion(wnd : HWND; rect : TRect);

  begin

   rgn := CreateRoundRectRgn(rect.left, rect.top, rect.right, rect.bottom, 30, 30);

   SetWindowRgn(wnd, rgn, TRUE);

  end;

  procedure TForm1.DrawEllipticRegion(wnd : HWND; rect : TRect);

  begin

   rgn := CreateEllipticRgn(rect.left, rect.top, rect.right, rect.bottom);

   SetWindowRgn(wnd, rgn, TRUE);

  end;

  procedure TForm1.DrawPolygonRegion(wnd : HWND; rect : TRect; NumPoints : Integer; DoStarShape : Boolean);

  const

   RadConvert = PI/180;

   Degrees  = 360;

   MaxLines = 100;

  var

   x, y,

   xCenter,

   yCenter,

   radius,

   pts,

   I   : Integer;

   angle,

   rotation: Extended;

   arPts : Array[0..MaxLines] of TPoint;

  begin

   xCenter := (rect.Right - rect.Left) div 2;

   yCenter := (rect.Bottom - rect.Top) div 2;

   if DoStarShape then

    begin

     rotation := Degrees/(2*NumPoints);

     pts := 2 * NumPoints;

    end

     else

    begin

  rotation := Degrees/NumPoints;       //得到每个顶点的度数

   pts := NumPoints ;

    end;

   radius := yCenter;

   for I := 0 to pts - 1 do begin

    if DoStarShape then

     if (I mod 2) = 0 then

      radius := Round(radius/2)

     else

      radius := yCenter;

    angle := ((I * rotation) + 90) * RadConvert;

    x := xCenter + Round(cos(angle) * radius);

    y := yCenter - Round(sin(angle) * radius);

    arPts[I].X := x;

    arPts[I].Y := y;

   end;

   rgn := CreatePolygonRgn(arPts, pts, WINDING);

   SetWindowRgn(wnd, rgn, TRUE);

  end;

  procedure TForm1.Button1Click(Sender: TObject);

  begin

   DrawRndRectRegion(Form1.Handle, Form1.ClientRect);

  end;

  procedure TForm1.Button4Click(Sender: TObject);

  begin

   DrawPolygonRegion(Panel1.Handle, Panel1.BoundsRect, SpinEdit1.Value, True);

  end;

  procedure TForm1.Button3Click(Sender: TObject);

  begin

   DrawEllipticRegion(Form1.Handle, Form1.ClientRect);

  end;

  procedure TForm1.Button2Click(Sender: TObject);

  begin

   DrawPolygonRegion(Panel1.Handle, Panel1.BoundsRect, SpinEdit1.Value, False);

  end;

  e

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号