All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
存储过程中调用C#写的DLL_[Asp.Net教程]
实现基于php和MySQL的动态树型菜单_php资料_编程技术
SQL Server开发人员应聘常被问的问题_[SQL Server教程]
ASP.NET技巧:请求网址并解析返回的html_[Asp.Net教程]
用ASP.NET,2.0,FormView控件控制显示_.net资料_编程技术
Mysql5,for,WinXP配置法_php资料_编程技术
asp.net2.0登陆控件之登录控件典型应用
ASP.NET多频道网站架构实现方法_.net资料_编程技术
ASP.NET技术获取IP与MAC地址的方法_[Asp.Net教程]
xml的解析处理以及其他_[XML教程]
Reading number is top 10 pictures
奇趣的世界记录1
China telecom 114 spokesman MeiYanXu1
The service WaLiangGe Chinese aircraft carrier1
Original author said, this is the Hengyang people
On the verge of extinction of the beach1
NeedWallpaper12
美女浴室写真3
photos of ashlynn brooke(ashlynn brooke的美图)
Embarrassing things comic collection1
Gang rape
Download software ranking
asp.net技术内幕
Proficient in Eclipse
Eclipse 4.2.2 For Win32
星际争霸1.08硬盘免安装版
Tram sex maniac 2 (H) rar bag13
1400篇各类破解文章
徐若瑄成名作“魔鬼天使”
网络管理员第三版
Adobe Flash Player(IE) 10.0.32.18 浏览器专用的FLASH插件
Desire a peach blossom
aaa published in(发表于) 2014/7/19 0:13:46 Edit(编辑)
Delphi非矩形窗体

Delphi非矩形窗体

Delphi非矩形窗体

Delphi非矩形窗体

实例说明

大部分Windows窗体都是一个矩形区域,读者是否已经厌倦了这种中规中矩的矩形窗体?本实例的窗体是一个打破传统矩形窗体的异性窗体,运行该例会看到一个非常可爱的窗体,单击X按钮就会使窗体关闭,效果如图1.21



图1.21非矩形窗体

技术要点

在Windows操作系统中,每个窗口都具有一个绘图区域,当这个区域需要绘制时,窗口会自动安装这个区域的范围绘制图像,如果在程序启动时将这个区域改变,系统就会按照改变后的区域绘制图像,这就等于改变了窗口的形状。Windows提供了一个API函数SetWindowRgn,通过这个函数可以改变窗口的区域,该函数原型如下:

function SetWindowRgn(hWnd:HWND;hRgn:HRGN;bRedraw:BOOL):Integer;stdcall;

参数说明:

hWnd 目标窗口句柄

hRgn 改变后区域

bRedraw 重新绘制

其中HRGN类型的参数就是窗口的新区域,这个区域可以通过很多的方法创建,本例中实现一个异形窗体,创建这个异形的区域需要从图像中截取。首先制作一副图像,在图像中绘制换一个图像,该图像就是将要截取的区域形状,图形的周围用一种特殊的颜色填充,这样可以突出于再截取的图形。然后在程序中将区域截取出来。最后将图像绘制到窗体中。这个过程中用到了CreateRgn和CombineRgn两个API函数。这两个函数的原型如下:

function CreateRectRgn(p1,p2,p3,p4:Integer):HRGN;stdcall;

参数说明:

p1,p2,p3,p4 创建尺寸的矩形参数。

function CombineRgn(p1,p2,p3,p4:HRGN;p4:Integer):Integer;stdcall;

参数说明:

p1,p2,p3 HRGN类型的区域。

其中参数p4取值如表1.10所示



表1.10 参数p4的取值。

实现的过程

1.新建一个标准工程,创建一个新窗体,默认主窗体的Name属性为Form1。

2.在窗体中添加TSpeedButton组件。

3.设置TSpeedButton组件的Flat属性为True。

4.程序代码如下:

procedure TForm1.FormCreate(Sender: TObject);

var

threadrgn,tmprgn:HRGN;

x,y,t,h:integer;

begin

Bitmapb:=TBitMap.Create;

Bitmapb.LoadFromFile('heart.bmp');

threadrgn:=CreateRectRgn(0,0,bitmapb.Width,bitmapb.Height);

t:=bitmapb.Height;

h:=bitmapb.Width;

self.Height:=t;

self.Width:=h;

for y:=0 to t do

for x:=0 to h do

if bitmapb.Canvas.Pixels[x,y] = rgb(0,0,255) then

begin

tmpRgn:=CreateRectRgn(x,y,x+1,y+1);

CombineRgn(threadrgn,threadrgn,tmpRgn,RGN_XOR);

DeleteObject(tmpRgn);

end;

SetWindowRgn(handle,Threadrgn,false);

end;




添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.