欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-23 12:26:13
...

一般要画图都是采用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 如何在指定控件画出矩形区域并能调节大小

若要调节矩形区域的大小,只需要改变对角坐标即可或者采用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 如何在指定控件画出矩形区域并能调节大小
MFC 如何在指定控件画出矩形区域并能调节大小

相关标签: mfc