MFC 如何在指定控件画出矩形区域并能调节大小

一般要画图都是采用Moveto和Lineto,只需要画四条线就可以画成矩形,但是MFC有封装好的Crect类,可以直接画出矩形区域。
如果要在指定控件上画出矩形区域,首先要获取指定控件DC再画矩形。
代码如下:

CDC *dc = GetDlgItem(IDC_STATIC_PIC1)->GetDC();//获取控件DC
        CPen pen(PS_SOLID, 1, RGB(0, 255, 0));//创建画笔为绿色
        CRect rc;
        int n = 30;
        GetDlgItem(IDC_STATIC_PIC1)->GetClientRect(&rc);//获取控件区域
        CRect rect;//创建一个Crect对象并通过SetRect画出具体矩形区域
        rect.SetRect(rc.Width() / 2 - n , rc.Height() / 2 - n, rc.Width() / 2 + n, rc.Height() / 2 + n);//这是为了相对于控件位置画图
        dc->SelectObject(&pen);//在dc上放置画笔
        dc->SelectStockObject(NULL_BRUSH);//使画出的矩形区域为透明
        dc->Rectangle(rect);

运行后如下图:
这里写图片描述

若要调节矩形区域的大小,只需要改变对角坐标即可或者采用Crect类的InflateRect函数放大区域和DeflateRect函数缩小区域
代码如下(第一种),在上述代码基础上添加几个变量从而改变对角坐标:

CRect rect;
rect.SetRect(rc.Width() / 2 - n - rectLX, rc.Height() / 2 - n - rectLY, rc.Width() / 2 + n + rectRX, rc.Height() / 2 + n + rectRY);//改变rectLX,rectLY,rectRX,rectRY的值就能改变区域大小

运行如下图:
这里写图片描述
这里写图片描述

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值