busyer试做MFC简易画板

操作流程详述

1.总述

​ 本程序为一个画板,用户可以在规定的范围内修改画笔的颜色,形状以及粗细。

2.执行流程

如图

初始化效果

图中左一复选框为画笔颜色,中间为画笔粗细,右侧为画笔形状

整个操作过程可任意选择属性进行绘画,同时自带有默认属性

3.可能存在的一些异常

​ 在选完一个属性想要继续选下一个属性时,会出现下图错误,只需点击忽略,整个功能将完全不受影响

4.运行效果

5.关键代码

5.1初始化标签
	//初始化尺寸
	CComboBox *COMB_Size = (CComboBox*)GetDlgItem(IDC_SIZE);
	CString temp[20] = { L"0.5",L"0.8",L"0.9",L"1", L"2",L"3" ,L"4",L"5",L"6",L"7",L"8",L"9",L"10" ,L"12" ,L"15",L"14" ,L"16",L"18" ,L"20",L"25" };
	for (int size1 = 0; size1 < 20; size1++) {
		COMB_Size->InsertString(size1, (LPCTSTR)(temp[size1]));
	}

	//初始化线条形状
	CComboBox *COMB_SHAPE = (CComboBox*)GetDlgItem(IDC_SHAPE);
	COMB_SHAPE->InsertString(0, L"连续实线");
	COMB_SHAPE->InsertString(1, L"虚线");//这个必须线宽为1
	COMB_SHAPE->InsertString(2, L"化妆画笔");
5.2绘画
void CMFCApplication1Dlg::OnLButtonDown(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	m_StartPoint = point;

	CDialogEx::OnLButtonDown(nFlags, point);
}


void CMFCApplication1Dlg::OnLButtonUp(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	CDC *pDC = GetDC();
	pDC->SelectObject(&pen);
	pDC->MoveTo(m_StartPoint);
	pDC->LineTo(point);
	ReleaseDC(pDC);


	CDialogEx::OnLButtonUp(nFlags, point);
}


void CMFCApplication1Dlg::OnMouseMove(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	if (nFlags == MK_LBUTTON)    
	{
		CClientDC aDC(this);
		aDC.SelectObject(&pen);
		aDC.MoveTo(m_StartPoint);
		aDC.LineTo(point);
		m_StartPoint = point;
	}

	CDialogEx::OnMouseMove(nFlags, point);
}
5.3属性变化
//颜色
void CMFCApplication1Dlg::OnBnClickedColor()
{
	// TODO: 在此添加控件通知处理程序代码
	CMFCColorButton *control =	(CMFCColorButton*)GetDlgItem(IDC_COLOR);
	color = control->GetColor();
	pen.CreatePen(style, size, color);
}



//粗细
void CMFCApplication1Dlg::OnCbnSelchangeSize()
{
	// TODO: 在此添加控件通知处理程序代码
	CComboBox *control = (CComboBox*)GetDlgItem(IDC_SIZE);
	int nIndex = control->GetCurSel();
	CString strCBText;
	control->GetLBText(nIndex, strCBText);

	size = _ttoi(strCBText);
	pen.CreatePen(style, size, color);
}

//线条形状
void CMFCApplication1Dlg::OnCbnSelchangeShape()
{
	// TODO: 在此添加控件通知处理程序代码
	CComboBox *control = (CComboBox*)GetDlgItem(IDC_SHAPE);
	int nIndex = control->GetCurSel();

	switch (nIndex) {
		case 0:
			style = PS_SOLID;
			break;
		case 1:
			style = PS_DASH;
			break;
		case 2:
			style = PS_COSMETIC;
			break;
		default:
			break;

	}
	pen.CreatePen(style, size, color);
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值