设为首页收藏本站

Delphi乐园 开发者的家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2096|回复: 3

Delphi乐园 WinAPI: SetRectRgn - 将区域转换成矩形区域 [复制链接]

Rank: 8Rank: 8

  • TA的每日心情
    奋斗
    2014-4-23 19:02:09
  • 签到天数: 42 天

    [LV.5]常住居民I

    金钱
    67776
    13436
    0
    在线时间
    25 小时
    阅读权限
    10
    精华
    0
    积分
    0
    UID
    2050
    发表于 2012-4-17 00:07:16 |显示全部楼层
    分享到:
    本例效果图:
    ) G9 x; K( d; x1 b4 s7 L( }$ d0 R
    2 d' Y: Q+ [( }- ^) q o_85271.gif

    unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs;type  TForm1 = class(TForm)    procedure FormClick(Sender: TObject);  end;var  Form1: TForm1;implementation{$R *.dfm}var f: Boolean;procedure TForm1.FormClick(Sender: TObject);const  n = 50;var  Rgn: HRGN;  x1,y1,x2,y2: Integer;begin  Repaint;  x1 := n;  y1 := n div 2;  x2 := ClientWidth - n;  y2 := ClientHeight - n;  {建立椭圆区域}  Rgn := CreateEllipticRgn(x1, y1, x2, y2);  {转换为矩形区域 - 谈不上是转换, 是重新定制了一个矩形区域, 只是用了原来的区域句柄而已}  if f then SetRectRgn(Rgn, 11, 11, 111, 111);  f := not f;  {绘制区域}  Canvas.Brush.Color := clSilver;  Canvas.Brush.Style := bsCross;  FillRgn(Canvas.Handle, Rgn, Canvas.Brush.Handle);  Canvas.Brush.Color := clRed;  Canvas.Brush.Style := bsSolid;  FrameRgn(Canvas.Handle, Rgn, Canvas.Brush.Handle, 2, 2);  DeleteObject(Rgn);end;end.' G) U$ H' [" R/ F* i, {$ ?! h! s
    / t- a! d$ {; n7 ~+ U
    icon_logo.png
    该贴已经同步到 youqingxue521的微博
    啊啊啊啊啊啊啊啊啊啊啊
    爱巧铃9 该用户已被删除
    发表于 2015-2-5 18:47:28 |显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    空间、域名、优惠稳定。香港空间1元,美国2元。

    手机版|Delphi乐园 ( 冀ICP备11023363号-7 )    

    GMT+8, 2016-10-23 02:18

    Powered by Discuz! X2

    © 2001-2011 Comsenz Inc.

    公网安备 14090202000504号

    回顶部