MFC圆角背景移动边角底色毛刺解决方案

 1    CRect rc;
 2     Graphics graphics(pDC->m_hDC);
 3     GetClientRect(&rc);
 4     CRgn m_rgn;
 5 
 6     if (m_pBgImage)
 7     {           
 8         graphics.DrawImage(m_pBgImage, 0, 0, rc.Width(), rc.Height());   //贴背景
 9     }
10     if(!m_rgn.m_hObject)
11     {
12         m_rgn.CreateRoundRectRgn((-rc.left) - 1,-rc.top,rc.right - rc.left + 2,rc.bottom - rc.top + 2,15,15);
13         SetWindowRgn(m_rgn,TRUE);
14     }

 

MFC对话框上贴背景,如果有圆角背景图片,边角会做成透明,在生成时背景时,透明处先取底色作为边角颜色,以至于在图片位置改变时或背景改变时原本透明的地方跟其他地方不和谐,造成毛刺。

上面代码在OnEraseBkgnd(CDC* pDC)里,让绘制的图片去边角

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。