形态各异的不规则窗体

2016-01-29 11:54 3 1 收藏

形态各异的不规则窗体,形态各异的不规则窗体

【 tulaoshi.com - C语言心得技巧 】

形态各异的不规则窗体
作者:李晓飞

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

下载本文示例工程

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

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

一、创建不规则窗体的几个主要函数:
<1 CreateRectRgn : 创建矩形窗体轮廓。
<2 CreateRoundRectRgn : 创建圆角矩形窗体轮廓。
<3 CreateEllipticRgn : 创建圆形或椭圆形窗体轮廓。
<4 CreatePolygonRgn : 创建多边形窗体轮廓。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

上面函数在创建不规则窗体轮廓时可直接使用,无须自己指定轮廓路径。如果想让窗体更复杂,你可以使用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);}elseAfxMessageBox("Error!");
看过了以上代码你也许已经明白这三个函数的内涵。那么又如何画出象Word中按F1后弹出的窗体呢?这我就不用多说了吧,拿起你手中的画笔吧,一切都很Easy!所有的代码都在本文附带的例子里面,可不要错过哦!

来源:https://www.tulaoshi.com/n/20160129/1483780.html

延伸阅读
意大利饼干:baci di dama 1.将杏仁倒入煮热的开水里,煮几分钟,然后倒出,剥皮。放入平底锅将杏仁炒成带金黄色,但不可以炒焦。(也可以买已经炒过的杏仁,节省时间吗。) 2.将炒好的杏仁搅碎,加入50克的白糖。 3.将搅碎的杏仁倒入稍大的碗里,加入面粉,剩余的白糖,软化的黄油然后一起和成均匀的面团。 4.将面团用保鲜膜包好放到冰...
标签: 鸡蛋 蛋黄 饼干
笑娃娃饼干 1.黄油切丁放入干净的盆子里室温软化后(能轻易的用手戳出一个小洞的程度)搅打均匀,再加糖粉搅打均匀 2.分次加入蛋黄液搅打均匀 3.加入几滴香草精搅打均匀 4.加入过筛的低粉和盐拌匀成黄油面团后,分块压扁裹入保鲜膜或保鲜袋放冰箱冷藏30分钟 5.将变硬的面团在案板上洒许高筋粉(防止粘牢,中筋粉也可以),擀成3mm左右...
第一步:量纸的时候,除了要预留打折的部分还要多留二至三公分的接合部分。裁完包装纸后,先在纸的下缘作折线,其方法是将纸往内折三公分(粗细可任意调整),再以此折线为准往上折三至五次,然后打开纸,就会发现纸上有三到五条折线。 第二步:抓住最靠近外缘的折线往内折,成为纸的新外缘;然后抓住第二条折线,压折于居新外缘一公分处;...
不规则家具能够吸引人的重要一点就是它的形式,很多人选择不规则家具的原因就是觉得它有设计感,能够让空间与众不同,但是这毕竟只是一种感性的认识,其实感性的设计更需要我们去理性地对待。 在选择不规则家具时,我们应该把握住几个原则: 1 你的空间能力 不...
标签: 鸡蛋 蛋黄
意大利饼干:baci di dama 1.将杏仁倒入煮热的开水里,煮几分钟,然后倒出,剥皮。放入平底锅将杏仁炒成带金黄色,但不可以炒焦。(也可以买已经炒过的杏仁,节省时间吗。) 2.将炒好的杏仁搅碎,加入50克的白糖。 3.将搅碎的杏仁倒入稍大的碗里,加入面粉,剩余的白糖,软化的黄油然后一起和成均匀的面团。 4.将面团用保鲜膜包好放到冰...

经验教程

218

收藏

85
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部