delphi 窗体阴影

放窗体创建事件里面

SetClassLong(Handle, GCL_STYLE, GetClassLong(Handle, GCL_STYLE) or CS_DROPSHADOW);

采用API画圆角的窗体!

圆角窗体一(四角都是圆角的)采用CreateRoundRectRgn,SetWindowRgn函数就可实现!函数参数如下:

函数一:

  int SetWindowRgn;(HWND hWnd, HRGN hRgn, BOOL bRedraw)

  参数

  hWnd

[在] 对窗户区域将被设定的窗户的柄。

  hRgn

  [在] 对一个区域的柄。 功能将窗户的窗户区域设定为这一个区域。

  如果 hRgn 是无效力的,功能将窗户区域设定为零。

  bRedraw

  [在] 叙述系统是否在设定窗户区域之后重划窗户。 如果 bRedraw 是真实的,系统这么做; 另外,它不。

  典型地, 你设定 bRedraw 到真实的如果窗户是看得见的。

  返回值

  如果功能成功,回返价值是非零。

  如果功能失败,回返价值是零。

函数二:

  HRGN CreateRoundRectRgn(int nLeftRect, int nTopRect, int nRightRect, int nBottomRect, int nWidthEllipse, int nHeightEllipse);

参数表 参数 类型及说明:

  X1,Y1 Long,矩形左上角的X,Y坐标

  X2,Y2 Long,矩形右下角的X,Y坐标

  X3 Long,圆角椭圆的宽。其范围从0(没有圆角)到矩形宽(全圆)

  Y3 Long,圆角椭圆的高。其范围从0(没有圆角)到矩形高(全圆)

画一个圆角窗体就用以上两个函数,实例:

SetWindowRgn(handle, CreateRoundRectRgn(0, 0, self.Width, self.Height, 16, 16), True);  //即可画一个圆角窗体

圆角窗体二(指点画窗体的某一只角为圆角):

采用函数:CreateRoundRectRgn SetwindowRgn ,CreateRectRgn  CombineRgn

前面两个函数上面已经介绍,看看下面的两个参数吧!

函数三

Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long

  [说明]

  创建一个由点X1,Y1和X2,Y2描述的矩形区域

  [参数表]

  X1,Y1 ---------- Long,矩形左上角X,Y坐标

  X2,Y2 ---------- Long,矩形右下角X,Y坐标

  [返回值]

  Long,执行成功为区域句柄,失败则为零

函数二

Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long

[说明]

  将两个区域组合为一个新区域

  [参数表]

  hDestRgn ------- Long,包含组合结果的区域句柄

  hSrcRgn1 ------- Long,源区域1

  hSrcRgn2 ------- Long,源区域2

  nCombineMode --- Long,组合两区域的方法。可设为下述常数

  RGN_AND

  hDestRgn被设置为两个源区域的交集(集合中的交集)

  RGN_COPY

  hDestRgn被设置为hSrcRgn1的拷贝

  RGN_DIFF

  hDestRgn被设置为hSrcRgn1与hSrcRgn2相减后的区域(集合中的差集)

  RGN_OR hDestRgn被设置为两个区域的并集(集合中的并集)

  RGN_XOR

  hDestRgn被设置为两个区域的异或操作后的区域(集合中的异或操作)

  [返回值]

  Long,下列常数之一:

  COMPLEXREGION:区域有互相交叠的边界

  SIMPLEREGION:区域边界没有互相交叠

  NULLREGION:区域为空

  ERRORAPI:不能创建组合区域

实例:

var

Reg1,Reg2:  THandle;

begin

Reg1 := CreateRoundRectRgn(0, 0, self.Width, self.Width, 16, 16);  //在窗体指定的位置上创建一个圆角句型区域

Reg2 := CreateRectRgn(20, 20, self.Width, self.Width);     //在窗体指定的位置上创建一个矩形区域

CombineRgn(Reg1, Reg1, Reg2, RGN_OR);   //将Reg1,Reg2两个区域进行合并,Reg1得到Reg1,reg2的集合并集!

SetwindowRgn(handle, Reg1, True);    //将以上创建的区域设定成窗体的区域

end;

以上代码是将一个窗体的上面两只角画成圆角,窗体下面的两只角还是直角!

delphi 特殊窗体的更多相关文章

  1. delphi实现窗体闪烁功能

    delphi实现窗体闪烁功能 以前做窗口闪动时都没有考虑到让任务栏上的按钮闪动的问题, 现在一个客户需要任务栏按钮闪动,发现以前使用的flashwindow不能达到要求了, 查找了一下,找到flash ...

  2. Delphi中窗体的事件

    Delphi中窗体的事件 Form窗体可以响应各种各样的时间,在Object Inspector的Events页面中罗列了一大堆,如下图: 下面将要列出一些常用的事件. 1.OnActivate 当窗 ...

  3. Delphi打开窗体时报"Corrupt Portfolio Stream"

      今天在打开一个Delphi窗体时报了这么一个错误: Corrupt Portfolio Stream 查了一下,主要是由于Delphi窗体的*.ddp文件损坏引起的. 解决方法: 删除.ddp 文 ...

  4. Delphi:窗体自适应屏幕分辨率的改进

    在窗体依据屏幕分辨率自适应调整尺度方面,昨天的工作可以说是一个突破点.昨天的工作找到了长期以来我的原有方案的问题所在,这是非常关键的.但是昨天晚上的解决方案并不完美,今天的这个才是比较完美的解决版. ...

  5. delphi模态窗体最小化会隐藏的问题

    在使用delphi创建模态窗体的时候最小化窗体会导致最小化的窗体不可见,再次点击主窗体才会显示. 在这个模态窗体中增加以下函数 procedure WmSysCommand(var msg: TMes ...

  6. Delphi默认窗体随想

    Delphi中新建一个Form或者Frame时,它的字体都是西文习惯,这样就有可能造成在其他机器上由于字体的原因,窗体十分不美观.怎样才能为Delphi设置一个默认窗体,让它的字体Font符合中国习惯 ...

  7. Delphi 使窗体Showmodal后可以操作其他窗体

    对话框ShowModal之后不能操作其它窗口,实际上是因为Windows Disable了其它窗口.所以当你需要在模态对话框中访问其它已经可见的窗口时,需要用EnableWindow API来激活对应 ...

  8. Delphi 半透明窗体,窗体以及控件透明度

    很简单了 现在,适用所有控件和窗体: delphi设置窗口透明 form1.AlphaBlend :=true; //透明form1.AlphaBlendValue :=180; //透明度form1 ...

  9. DELPHI 异形窗体

    一定有很多人看到过一些奇形怪状的窗体,例如一些屏幕精灵.其实实现起来非常容易,做到三点就好啦.下面我使用Delphi做了一个VCL控件(TBmpShape),你只需要指定一幅图片就可以将窗体变成你的图 ...

随机推荐

  1. 高性能js之js文件的加载与解析

    随着网站的发展,现在的网页已经离不开js,经常一个页面会引入大量的js.那么该如何合理的加载这些js? head标签中引入js文件可能是最常见的一种方式,但是这样会造成一个问题.因为j可以说是浏览器中 ...

  2. 【leetcode】959. Regions Cut By Slashes

    题目如下: In a N x N grid composed of 1 x 1 squares, each 1 x 1 square consists of a /, \, or blank spac ...

  3. springcloud笔记一

    微服务的概述 什么是微服务? 现今微服务界没有一个统一的.标准的定义 微服务化的核心就是将统一的一站式应用,根据业务拆分成一个一个的服务,彻底的去耦合,每一个微服务提供单个业务功能的服务,一个服务做一 ...

  4. 状态压缩dp增量统计贡献——cf1238E(好题)

    这题的状态设计非常巧妙,因为dp[S]表示的并非当前正确的值,而是维护一个中间量,这个中间量在到达末状态时才正确 当然官方的题解其实更加直观,只不过理解起来其实有点困难 /* 给定一个串s,字符集为2 ...

  5. appium自动化获取app的appPackage与appActivity方法总结

    一,获取apppackage 方法不止一种,我只介绍自己知道的两种. 1,通过APPIUM工具添加APK包后,会自动显示出来. 2,打开UI AUTOMATOR VIEWER 定位工具,随便指向一个定 ...

  6. ASP.NET Core学习——1

    ASP.NET Core介绍 ASP.NET Core是一个新的开源和跨平台的框架,用于构建如Web应用.物联网(IoT)应用和移动后端应用等连接到互联网的基于云的现代应用程序.ASP.NET Cor ...

  7. artTemplate性能卓越的 js 模板引擎

    artTemplate-3.0 新一代 javascript 模板引擎 目录 特性 快速上手 模板语法 下载 方法 NodeJS 使用预编译 更新日志 授权协议 特性 性能卓越,执行速度通常是 Mus ...

  8. 剑指offer第二版面试题3:二维数组中的查找(JAVA版)

    题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 1 2 8 9 2 4 ...

  9. 1067 Sort with Swap(0, i) (25 分)

    Given any permutation of the numbers {0, 1, 2,..., N−1}, it is easy to sort them in increasing order ...

  10. java IO 类概述表

    列举常用的类方便查看,温故知新! byte input byte output character input character output Basic InputStream OutputStr ...