MFC创建圆角矩形按钮
时间: 2023-09-02 14:14:51 浏览: 384
项目中使用的圆角按钮
在 MFC 中创建圆角矩形按钮,可以使用 `CButton` 类的派生类,自定义绘制函数来实现。下面是一份示例代码:
1. 创建一个自定义按钮类 `CRoundRectButton`
```c++
class CRoundRectButton : public CButton
{
public:
CRoundRectButton();
virtual ~CRoundRectButton();
protected:
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
};
```
2. 在 `CRoundRectButton` 类中实现 `DrawItem` 函数,用于绘制圆角矩形按钮
```c++
void CRoundRectButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
CRect rect = lpDrawItemStruct->rcItem;
if (lpDrawItemStruct->itemState & ODS_SELECTED) // 按下状态
{
pDC->FillSolidRect(rect, ::GetSysColor(COLOR_BTNFACE));
pDC->DrawEdge(rect, EDGE_SUNKEN, BF_RECT);
}
else // 正常状态
{
pDC->FillSolidRect(rect, ::GetSysColor(COLOR_BTNFACE));
pDC->DrawEdge(rect, EDGE_RAISED, BF_RECT);
}
// 绘制圆角矩形
int nRound = 10; // 圆角大小
CRect roundRect(rect.left + 2, rect.top + 2, rect.right - 2, rect.bottom - 2);
pDC->RoundRect(roundRect, CPoint(nRound, nRound));
}
```
3. 在对话框类中添加 `CRoundRectButton` 控件,并设置样式
```c++
CRoundRectButton m_btnRound;
m_btnRound.Create(_T("圆角按钮"), WS_CHILD | WS_VISIBLE | BS_OWNERDRAW, CRect(50, 50, 150, 80), this, IDC_BTN_ROUNDRECT);
```
在上面的代码中,`m_btnRound` 是一个 `CRoundRectButton` 类的对象,通过 `Create` 函数创建一个圆角矩形按钮,并设置样式为 `WS_CHILD | WS_VISIBLE | BS_OWNERDRAW`,其中 `BS_OWNERDRAW` 表示该按钮使用自定义绘制函数。
运行程序后即可看到一个圆角矩形按钮。
阅读全文