CreateRoundRectRgn创建圆角矩形

菜头叔 2013-06-27 11:30:25
我想把对话框变成圆角矩形的,但是出了些问题。
CreateRoundRectRgn的前4个参数分别是左上角和右下角2个点的x,y后面2个是圆角矩形的圆角的长和高。

CRect animRect;
GetClientRect(&animRect);
CRgn rgn;
rgn.CreateRoundRectRgn( animRect.left+3, animRect.top+2,animRect.right-2, animRect.bottom-1, 6, 6);
SetWindowRgn(rgn, TRUE);

设置RGN代码如上。设置后出现了这个问题,实际看到的矩形的长款和实际在代码中获得的大小不一样!!
上图中整张图片是实际大小,而非黑色区域是视觉上看到的大小。为什么会这样。设置的矩形不应该和实际大小一样么?怎么才能让创建的圆角矩形和实际大小一样?
...全文
631 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜头叔 2013-06-29
  • 打赏
  • 举报
回复
引用 2 楼 CometNet 的回复:
你希望Rgn和客户区一致?
CRect animRect;
GetClientRect(&animRect);
CRgn rgn;
rgn.CreateRoundRectRgn(0,0,animRect.Width()+1,animRect.Height()+1, 6, 6);
SetWindowRgn(rgn, TRUE); 
是的,已经解决了。写错位置了...写在了OnInit里了..应该写在onsize和movewindow里
yaozhiyong110 2013-06-28
  • 打赏
  • 举报
回复
GetClientRect(&animRect);是获取客户区的矩形范围...
邓学彬 2013-06-28
  • 打赏
  • 举报
回复
你希望Rgn和客户区一致?
CRect animRect;
GetClientRect(&animRect);
CRgn rgn;
rgn.CreateRoundRectRgn(0,0,animRect.Width()+1,animRect.Height()+1, 6, 6);
SetWindowRgn(rgn, TRUE); 

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧