扩大矩形函数和缩小矩形函数的用法

 

一、函数讲解
      在MFC中,常使用扩大和缩小矩形函数对原矩形进行调整,以下给出使用方法:
     1.扩大矩形函数

类属:CRect::InflateRect

原型:

void InflateRect( int x, int y );

void InflateRect( SIZE size );

void InflateRect( LPCRECT lpRect );

void InflateRect( int l, int t, int r, int b );

返回值:无。

参数:x指定扩大CRect左、右边的数值,y指定扩大CRect上、下边的数值;size中的cx成员指定扩大左、右边的数值,cy指定扩大CRect上、下边的数值。lpRect的各个成员指定扩大每一边的数值;ltrb分别指定扩大CRect的左、上、右和下边的数值。

说明:

&  InflateRect()函数是通过将CRect的边向远离其中心的方向移动来扩大的。

假定矩形的左上角点为(0, 0),右下角点为(300, 200)。执行InflateRect(100, 50)函数后

矩形的左上角点为(-100,-50),右下角点为(400, 250)

2.缩小矩形函数

类属:CRect::DeflateRect

原型:

void DeflateRect( int x, int y );

void DeflateRect( SIZE size );

void DeflateRect( LPCRECT lpRect );

void DeflateRect( int l, int t, int r, int b );

返回值:无。

参数:x指定缩小CRect左、右边的数值,y指定缩小CRect上、下边的数值;size中的cx成员指定缩小左、右边的数值,cy指定缩小CRect上、下边的数值。lpRect的各个成员指定缩小每一边的数值;ltrb分别指定缩小CRect的左、上、右和下边的数值。

说明:

&  DeflateRect()函数是通过将CRect的边向靠近其中心的方向移动来缩小的。

  &  假定矩形的左上角点为(0, 0),右下角点为(300, 200)。执行DeflateRect(100, 50)函数后,矩形的左上角点为(100,50),右下角点为(200, 150)
二、测试程序
void CTestView::OnDraw(CDC* pDC)
{
     CTestDoc* pDoc = GetDocument();
     ASSERT_VALID(pDoc);
     // TODO: add draw code for native data here
     CRect rect;//定义客户区
     GetClientRect(&rect);//获得客户区的大小
     pDC->SetMapMode(MM_ANISOTROPIC);//pDC自定义坐标系
     pDC->SetWindowExt(rect.Width(),rect.Height());//设置窗口范围
     pDC->SetViewportExt(rect.Width(),-rect.Height());//x轴水平向右,y轴垂直向上
     pDC->SetViewportOrg(rect.Width()/2,rect.Height()/2);//屏幕中心为原点
     CBrush *pOldBrush;
     pOldBrush=(CBrush*)pDC->SelectStockObject(NULL_BRUSH);
     //绘制原矩形
     CPen NewPen1,*pOldPen;
     NewPen1.CreatePen(PS_DASH,1,RGB(0,0,0));
     pOldPen=pDC->SelectObject(&NewPen1);
     CRect rect1(0,0,300,200);//原矩形黑色点线
     pDC->Rectangle(rect1);
     pDC->SelectObject(pOldPen);
     NewPen1.DeleteObject();
     //绘制扩大的矩形
     NewPen1.CreatePen(PS_SOLID,1,RGB(255,0,0));//扩大矩形红色实线
     pOldPen=pDC->SelectObject(&NewPen1);
     rect1.InflateRect(100,50);
     pDC->Rectangle(rect1);
     pDC->SelectObject(pOldPen);
     NewPen1.DeleteObject();
     //绘制缩小的矩形
     NewPen1.CreatePen(PS_SOLID,1,RGB(0,0,255));//缩小矩形蓝色实线
     pOldPen=pDC->SelectObject(&NewPen1);
     CRect rect2(0,0,300,200);
     rect2.DeflateRect(100,50);
     pDC->Rectangle(rect2);
     pDC->SelectObject(pOldPen);
     //用于读出值
     //int x0=rect1.left;
     //int y0=rect1.top;
     //int x1=rect1.right; 
     //int y1=rect1.bottom;
}
三、图形
 图片



 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值