制作多边形窗体的关键在于设定多边形的区域,并根据这个指定的区域改变窗体的形状。Windows的CreatePolygonRgn和SetWindowRgn函数可以解决这两个难点。
利用以下代码即可将窗体设置为一个五边形:
procedure TForm1.FormCreate(Sender: TObject);
var
pt: array [0..4] of TPoint;
m_rgn: HRGN;
begin
pt[0].x:=self.Width div 2;
pt[0].y:=0;
pt[1].x:=0;
pt[1].y:=self.Height div 2;
pt[2].x:=self.Width div 2;
pt[2].y:=self.Height;
pt[3].x:=self.Width;
pt[3].y:=self.Height div 2;
pt[4].x:=self.Width;
pt[4].y:=0;
m_rgn:=CreatePolygonRgn(pt,5,WINDING);
SetWindowRgn(self.Handle,m_rgn,TRUE);
end;
该程序首先定义了一个TPoint类型的数组pt,在其中存储了一个五边形的数据。然后使用CreatePolygonRgn函
数将这个五边形转换成为一个区域,最后使用SetWindowRgn函数,根据五边形指定的区域改变窗体的形状。
程序代码如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
pt: array [0..4] of TPoint;
m_rgn: HRGN;
begin
pt[0].x:=self.Width div 2;
pt[0].y:=0;
pt[1].x:=0;
pt[1].y:=self.Height div 2;
pt[2].x:=self.Width div 2;
pt[2].y:=self.Height;
pt[3].x:=self.Width;
pt[3].y:=self.Height div 2;
pt[4].x:=self.Width;
pt[4].y:=0;
m_rgn:=CreatePolygonRgn(pt,5,WINDING);
SetWindowRgn(self.Handle,m_rgn,TRUE);
end;
end.
保存文件,然后按F9键运行程序,就可以看到效果。

delphi如何设计不规则窗体的更多相关文章

  1. WPF设计の不规则窗体

    我们在工作中,经常会需要画一些不规则的窗体,现在总结如下. 一.利用VisualBrush实现.这依赖于VisualBrush的特性,任何控件可以作为画刷,而画刷又可以作为背景. 此种方法可以用于实现 ...

  2. WPF界面设计技巧(1)—不规则窗体图文指南

    原文:WPF界面设计技巧(1)-不规则窗体图文指南 初到园子,奉上第一篇入门级教程,请勿见笑. 以往WinForm编程中,实现不规则窗体是有一定难度的,更难的是不规则窗体的边缘抗锯齿及局部透明处理.而 ...

  3. Delphi 实现不规则窗体

    最近为了要兼容XP系统(守旧的市场),又需要做出产品的特效,不得不从头学习一下这门 “聪明的语言” . 开发环境: win10 Delphi 10.2 Version 25.0.26309.314 产 ...

  4. delphi 不规则窗体与桌面宠物

    二.支持区域操作的编程接口在Windows的API函数中有一组用于区域操作的函数,可以用来生成区域.合并区域.获取区域数据.根据数据生成区域.把区域和窗体联系等,其中常用的几个函数有:生成矩形区域的C ...

  5. WPF中不规则窗体与WebBrowser控件的兼容问题解决办法

    原文:WPF中不规则窗体与WebBrowser控件的兼容问题解决办法 引言 这几天受委托开发一个网络电视项目,要求初步先使用内嵌网页形式实现视频播放和选单,以后再考虑将网页中的所有功能整合进桌面程序. ...

  6. WPF中不规则窗体与WindowsFormsHost控件的兼容问题完美解决方案

    首先先得瑟一下,有关WPF中不规则窗体与WindowsFormsHost控件不兼容的问题,网上给出的解决方案不能满足所有的情况,是有特定条件的,比如  WPF中不规则窗体与WebBrowser控件的兼 ...

  7. QT实现不规则窗体

    看到网上有很多不规则窗体的实现,效果很酷.于是使用QT也实现了一个,QT的不规则窗体实现非常简单,只需要设置一个mask(遮掩)图片,这个图片的格式可以使用png或bmp格式,我使用了png格式,默认 ...

  8. [小结][N种方法]实现WPF不规则窗体

    原文:[小结][N种方法]实现WPF不规则窗体 WPF实现不规则窗体,方法很多很多多.... 本文总结DebugLZQ认为简洁高效的几种方法 实现WPF不规则窗体的几种常用的方法如下: 1.使用Ble ...

  9. 游戏UI框架设计(三) : 窗体的层级管理

    游戏UI框架设计(三) ---窗体的层级管理 UI框架中UI窗体的"层级管理",最核心的问题是如何进行窗体的显示管理.窗体(预设)的显示我们前面定义了三种类型: 普通.隐藏其他.反 ...

随机推荐

  1. 关于linux centos7 vmware 和windows7 文件共享笔记

    本方法是以win7,VMware9.0.1 ,centos6.4为基础实验的. 对于linux的初级使用阶段,都会Windows中使用linux虚拟机VMWare或者其它的.在Windows与linu ...

  2. FTP的PORT和PASV的连接方式以及数据连接端口号计算

    FTP的PORT和PASV的连接方式以及数据连接端口号计算   PORT(自动)方法的连接途中是: 客户端向服务器的FTP端口(原始是21)发送连接请求,服务器领受连接,建立一条command链路. ...

  3. C之输入输出函数(1) -- fgets()

    https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_71/rtref/fgets.htm #include <stdio.h> ...

  4. python:列表、元组和字典

    1.1.特点:   任意对象的有序集合   通过偏移量读取   可变长度,异构以及任意嵌套   属于可变序列的分类   对象引用数组:当把一个对象赋给一个数据结构元素或变量名时,python总会存储对 ...

  5. Dijkstra Algorithm 迪克特斯拉算法--Python

    迪克斯拉特算法: 1.找出代价最小的节点,即可在最短时间内到达的节点: 2.更新节点的邻居的开销: 3.重复这个过程,直到图中的每个节点都这样做了: 4.计算最终路径. ''' 迪克斯特拉算法: 1. ...

  6. 装nginx遇到的坑 未完待续

    首装nginx时 server { listen 8066;  监听端口号 server_name localhost;   监听地址 location / goldwind{   root /roo ...

  7. CSS:CSS 图片廊

    ylbtech-CSS:CSS 图片廊 1.返回顶部 1. CSS 图片廊 以下是使用CSS创建图片廊: 图片廊 以下是使用 CSS 创建图片廊: 实例 <div class="res ...

  8. 1.6 USB的插入检测机制

  9. this和super差异

    <三> this和super差异 1)super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句) 2)this(参数):调用本类中另一种形成的构造函数(应该为构造函数中 ...

  10. mysql动态列--统计报表信息对比

    SET @sql = NULL; SELECT GROUP_CONCAT(DISTINCT CONCAT( 'MAX(IF(tmp.summary = ''', tp.summary, ''', tm ...