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);
运行后如下图:
若要调节矩形区域的大小,只需要改变对角坐标即可或者采用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的值就能改变区域大小
运行如下图:
下一篇: webgl