王朝网络
分享
 
 
 

形态各异的不规则窗体

王朝vc·作者佚名  2006-01-17
宽屏版  字体: |||超大  

形态各异的不规则窗体

作者:李晓飞

下载本文示例工程

说起不规则窗体也许我们大家都会觉得新鲜,这是因为我们平日里绝大部分窗体用的都是正规正矩的矩形窗体,Word这个大名鼎鼎的软件想必大家都已用过,那么在Word里就按下你手中的F1键吧,弹出的窗体形态怎么样,很炫吧!(如下图所示)。

那么实现这样的窗体困难吗?简单!几句话就可以轻松搞定。不过在揭示答案之前我们还是先来熟悉一下在Windows里不规则窗体的实现几点要素。

一、创建不规则窗体的几个主要函数:

<1> CreateRectRgn : 创建矩形窗体轮廓。

<2> CreateRoundRectRgn : 创建圆角矩形窗体轮廓。

<3> CreateEllipticRgn : 创建圆形或椭圆形窗体轮廓。

<4> CreatePolygonRgn : 创建多边形窗体轮廓。

上面函数在创建不规则窗体轮廓时可直接使用,无须自己指定轮廓路径。如果想让窗体更复杂,你可以使用CombineRgn把多个轮廓路径混合起来实现。上面的函数还可以用BeginPath,EndPath和PathToRegion三个函数实现,其实这三个函数给用户提供了最大的创造和发挥的空间,让用户自定义窗体轮廓路径,这样用户就可以拿起手中Pen来画出所有你想要的东西,什么矩形/椭圆/多边形/弧线形......

都可以轻松搞定,就连字体来可以作为窗体的形状哦。

二、改变窗体的形状:

我们创建好了自己的窗体形状,那么如何来通知Windows来改变窗体的形状呢?秘密只有一句话:SetWindowRgn。

注意:本文所附带的例子全部以BeginPath,EndPath和PathToRegion为中心来讲解如何实现不规则窗体。

三、具体实现步骤:

说了这么多的函数,那么接下来就让我们一起来看一看如何来使用BeginPath,EndPath和PathToRegion。下面就以一个字体窗体来看看三者的使用步骤。假设以下代码放在了一个按钮的Click事件中:

CClientDC dc(this);

HDC hDC;

CFont mFont;

hDC = ::GetDC(this-m_hWnd);

//创建字体

VERIFY(mFont.CreateFont(

200, 50, 0, 0, FW_HEAVY, TRUE, FALSE,

0, ANSI_CHARSET, OUT_DEFAULT_PRECIS,

CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,

DEFAULT_PITCH | FF_SWISS, "宋体"));

if (hDC!=NULL)

{

//开始记录窗体轮廓路径

dc.BeginPath();

//设置背景为透明模式,这句话是必须有的。

dc.SetBkMode(TRANSPARENT);

CFont * pOldFont;

pOldFont = dc.SelectObject( &mFont );

dc.TextOut(0, 0, "VCKbase");

dc.SelectObject( pOldFont );

mFont.DeleteObject();

//结束记录窗体轮廓路径

dc.EndPath();

//把所记录的路径转化为窗体轮廓句柄

m_wndRgn = ::PathToRegion(dc);

//赋予窗体指定的轮廓形状

this-SetWindowRgn(m_wndRgn, TRUE);

}

else

AfxMessageBox("Error!");

看过了以上代码你也许已经明白这三个函数的内涵。那么又如何画出象Word中按F1后弹出的窗体呢?这我就不用多说了吧,拿起你手中的画笔吧,一切都很Easy!所有的代码都在本文附带的例子里面,可不要错过哦!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有