我有一個模式較少的對話框,我已經使用SetWindowRgn()將形狀更改爲一個圓角。我想用FrameRgn在它周圍畫一個彩色邊框。下面是我使用如何在MFC的非矩形窗口中繪製邊框
BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog(); m_Brush.CreateSolidBrush(RGB(255,255,255));
CRect rcDialog;
GetClientRect(rcDialog);
// This Creates area assigned to Dialog: This goes directly below the above in OnInitDialog
m_rgnShape.CreateRoundRectRgn(rcDialog.TopLeft().x, rcDialog.TopLeft().y,rcDialog.BottomRight().x,rcDialog.BottomRight().y, rcDialog.Width()/8, rcDialog.Height()/8);
::SetWindowRgn(GetSafeHwnd(), (HRGN)m_rgnShape, TRUE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CMyDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
CBrush brush;
brush.CreateSolidBrush(RGB(255,0,0));
dc.FrameRgn(&m_rgnShape, &brush, 2, 2);
}
任何人都可以解釋爲什麼FrameRgn不工作,也許在這裏提供一些示例代碼 ,這將使它的工作代碼。
嗨,我改變了代碼,當我繪製一個多邊形shaped.Now邊界顯示,但只爲多邊形的兩側。你可以告訴我如何控制它。現在,邊界不是來多邊形的所有邊。 – user2336139 2013-05-01 06:21:08
這可能是由於你在對話框上有一個邊框 - 我會在我的答案中添加一些內容來解釋。 – icabod 2013-05-01 15:58:24