menu

秋梦无痕

一场秋雨无梦痕,春夜清风冻煞人。冬来冷水寒似铁,夏至京北蟑满城。

Avatar

VC中创建不规则窗体

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

上面函数在创建不规则窗体轮廓时可直接使用,无须自己指定轮廓路径。如果想让窗体更复杂,你可以使用CombineRgn把多个轮廓路径混合起来实现。上面的函数还可以用BeginPath,EndPath和PathToRegion三个函数实现,用户可以自定义窗体轮廓路径。

在头文件中加入:
HRGN m_wndRgn;

然后在OnInitDialog函数中加入:

CDC* pDC = GetDC();
CFont mFont;
//创建字体
VERIFY(mFont.CreateFont(
200, // height of font
50, // average character width
0, // angle of escapement
0, // base-line orientation angle
FW_HEAVY, // font weight
TRUE, // italic attribute option
FALSE, // underline attribute option
0, // strikeout attribute option
ANSI_CHARSET, // character set identifier
OUT_DEFAULT_PRECIS, // output precision
CLIP_DEFAULT_PRECIS, // clipping precision
DEFAULT_QUALITY, // output quality
DEFAULT_PITCH | FF_SWISS, // pitch and family
"宋体" // typeface name
));
//开始记录窗体轮廓路径
pDC->BeginPath();
//设置背景为透明模式。
pDC->SetBkMode(TRANSPARENT);
CFont * pOldFont;
pOldFont = pDC->SelectObject( &mFont );
pDC->TextOut(0, 0, "吴雨");
pDC->SelectObject( pOldFont );
mFont.DeleteObject();
//结束记录窗体轮廓路径
pDC->EndPath();
//把所记录的路径转化为窗体轮廓句柄
m_wndRgn = ::PathToRegion(pDC->m_hDC);
//赋予窗体指定的轮廓形状
SetWindowRgn(m_wndRgn, TRUE);

这里总能看到一些不错的技术文章,不论是zt还是原创,赞~~
:D

呵呵,好~

评论已关闭