操作流程详述
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);
}