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);

运行后如下图:
MFC 如何在指定控件画出矩形区域并能调节大小_第1张图片

若要调节矩形区域的大小,只需要改变对角坐标即可或者采用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的值就能改变区域大小

运行如下图:
MFC 如何在指定控件画出矩形区域并能调节大小_第2张图片
MFC 如何在指定控件画出矩形区域并能调节大小_第3张图片

你可能感兴趣的:(MFC 如何在指定控件画出矩形区域并能调节大小)