MFC之学习绘制矩形、画刷使用

1.笔记

1.1绘制矩形

1.1.1函数原型:

BOOL CDC::Rectangle(int x1,int y1,int x2,int y2);
BOOL CDC::Rectangle(LPCRECT lpRect);

调用成功返回非零,否则返回零。

绘制的矩形不包括右边界和下边界,宽度为x2-x1,高度为y2-y1。矩形由左上角和右下角唯一确定。

1.1.2默认设置

绘制矩形包括绘制矩形边框和填充矩形内部,绘制边框使用画笔CPen,填充内部使用画刷CBrush。默认情况下画笔的属性为实线、1像素宽、黑色,画刷的属性为白色实体画刷。

1.2创建画刷

有三种画刷。

1.2.1实体画刷

函数原型:

BOOL CBrush::CreateSolidBrush(COLORREF crColor);

将整个封闭空间填充为指定颜色。调用成功返回非零,否则返回零。

1.2.2阴影画刷

函数原型:

BOOL CBrush::CreathHatchBrush(int nIndex,COLORREF crColor);

调用成功返回非零,否则返回零。 

1.2.3图案画刷

函数原型:

BOOL CBrush::CreatePatternBrush(CBitmap* pBitmap);

调用成功返回非零,否则返回零。

1.3选入设备上下文

函数原型:

CBrush* CDC::SelectObject(CBrush* pBrush);

调用成功则返回正在被替换对象的指针,否则返回NULL。

2.使用练习

2.1将客户区矩形左右边界各收缩100个像素,上下边界各收缩50个像素,得到一个新矩形,使用3像素宽的绿实线绘制边界线,使用蓝色填充矩形内部。

题意即将矩形向中心缩小,MFC已经封装好了矩形向中心收缩的函数,矩形向中心收缩无所谓坐标系,可按个人意愿选择是否自建坐标系。

2.1.1矩形向中心收缩函数

函数原型:

void CRect::DeflateRect(int x,int y);

x代表左右边框向内缩小的宽度,y代表上下边框向内缩小的高度。

2.1.2编程实现

void CExample1View::OnDraw(CDC* pDC)
{
	CExample1Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;

	// TODO: 在此处为本机数据添加绘制代码
	CRect rect;
	GetClientRect(rect);
	rect.DeflateRect(100, 50);//矩形向中心收缩

	CPen NewPen, * pOldPen;
	NewPen.CreatePen(PS_SOLID, 3, RGB(0, 255, 0));
	pOldPen = pDC->SelectObject(&NewPen);

	CBrush NewBrush, * pOldBrush;
	NewBrush.CreateSolidBrush(0xFF0000);//创建画刷
	pOldBrush = pDC->SelectObject(&NewBrush);//选择画刷,保存原来画刷

	pDC->Rectangle(rect);
	pDC->SelectObject(pOldPen);//恢复设备上下文
	pDC->SelectObject(pOldBrush);
}

  • 1
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赴星辰大海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值