一、函数讲解
在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的各个成员指定扩大每一边的数值;l、t、r和b分别指定扩大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的各个成员指定缩小每一边的数值;l、t、r和b分别指定缩小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;
}
三、图形