MFC制作Windows画图程序(二)

本文是MFC制作Windows画图程序系列的第二部分,介绍了如何实现颜色填充、选择画笔颜色、设置画笔粗细、图形保存及添加位图等功能。通过FloodFill函数实现颜色填充,CColorDialog对话框选择画笔颜色,用户输入值调整画笔粗细,利用CommonDialog控件保存图形,并通过LoadImage加载与绘制位图。
摘要由CSDN通过智能技术生成

《MFC制作Windows画图程序(一)》

7 颜色填充功能

油漆桶功能主要应用了FloodFill函数,该函数的功能是用当前刷从点(x, y)开始向四周填充到颜色为crColor的边界。其中形参m_PointBegin.x和m_PointBegin.y记录了鼠标单击时的位置,m_PenColor记录了之前绘制图形所用的铅笔颜色,这样FloodFill函数就会从鼠标单击时的位置开始如同漫水一样漫向四周,直到之前的铅笔颜色为止。这样就实现了颜色填充功能。
具体实现代码如下:

OnLButtonUp() 中添加如下代码:
	case DrawType::Fill:  
	{
   
		CClientDC dc(this);
		CBrush newBrush(m_BrushColor);
		oldBrush = dc.SelectObject(&newBrush);
		dc.SelectObject(newBrush);
		dc.FloodFill(m_PointBegin.x, m_PointBegin.y, m_PenColor);
		dc.SelectObject(oldBrush);
	}

实现效果:
在这里插入图片描述

8 选择画笔颜色

在设置画笔颜色的时候我们首先要定义一个CColorDialog对象,这是一个对话框,包含系统定义的颜色的列表,如图所示。当dlg.DoModal()==IDOK时,也就是说对话框弹出来了,并且你点击了对话框上的OK按钮,然后就执行m_PenColor=dlg.GetColor(),将画笔的颜色设置为你选择的颜色。
具体实现如下:

void CMFC_PAINTView::OnMenucolor() 
{
   
	CColorDialog dlg;
	if (IDOK == dlg.DoModal()) //弹出对话框
{
   
		m_PenColor = dlg.GetColor();//得到颜色
}
}
//在OnMouseMove()中和OnLButtonUp()中都需要添加以下代码:
CPen newPen, *oldPen;	
newPen.CreatePen(PS_SOLID, m_PenSize, m_PenColor);
oldPen = dc.SelectObject(&newPen);
//因为是局部变量,所以可以同名。
//在函数最后加dc.SelectObject(oldPen);

效果如下:
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值