透明圆形按钮
继承CWnd类
Draw3dRect画一个矩形,怎么画一个圆形的?
void CMyButton::OnPaint()
{
CPaintDC dc(this);
dc.Draw3dRect(mRect,RGB(50,50,50),RGB(250,250,250));
CRect tmp;
tmp.CopyRect(mRect);
tmp.DeflateRect(1,1,1,1);
dc.Draw3dRect(tmp,RGB(50,50,50),RGB(250,250,250));
tmp.DeflateRect(3,3,3,3);
}
[最优解释]
RoundRect
这个不好,因为它会把圆中间用背景画刷填充。
Ellipse也不行,同样会填充。
如上,调用CRgn的CreateRoundRectRgn,把矩形改造成圆形。SetWindowRgn只对顶层窗口有效,子窗口没用。
dc.FrameRgn(); 这样就可以绘制不填充的圆形。至于圆边框颜色,需要先dc.SelectObject()选择一个CPen。
[其他解释]
CRgn rgn;
rgn.CreateEllipticRgnIndirect(tmp);
SetWindowRgn(rgn);
[其他解释]
RoundRect
[其他解释]
先用CreateRoundRectRgn函数创建一个圆角矩形,然后通过SetWindowRgn函数设置到窗口上;