VC-6.0-下MFC基于对话框-绘制图形

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VC-6.0-下MFC基于对话框-绘制图形

附录表

一、具体步骤:

1、选择菜单栏的“新建”,选择MFC项目名为DrawGraphics,并设置为基于对话框的项目,如图-1、图-2所示;

图-1

图-2

2、按下键盘上的Ctrl+W键,调出类向导,选择“Add Class”,并点击“New”添加一个颜色按钮类CColorButton,继承自CButton类,如图-3所示:

图-3

3、在CColorButton中添加如下成员变量:

COLORREF color; //按钮颜色

CPoint arrays[4]; //按钮顶点坐标

BOOL IsShow; //是

否显示按钮

BOOL IsPressed; //按

钮是否被按下

4、右击CColorButton类,选择Add Virtul function ,重写其DraItem函数,如图-4,图-5所示:

图-4

图-5

5、为其Drawitem函数中添加如下代码:

CRect rect;

GetClientRect(rect);

CDC dc;

dc.Attach(lpDrawItemStruct->hDC);

arrays[0]=CPoint(rect.left,rect.top); arrays[1]=CPoint(rect.right,rect.top);

arrays[2]=CPoint(rect.right,rect.bottom);

arrays[3]=CPoint(rect.left,rect.bottom);

//设置背景透明

dc.SetBkMode(TRANSPARENT);

if (IsShow)

{

//创建一个位图画刷

CBrush brush(color);

dc.SelectObject(&brush);

CPen pen(PS_NULL,1,color);

dc.SelectObject(&pen);

dc.Rectangle(rect);

if(IsPressed)

{

CPen

pen(PS_DASHDOTDOT,3,RGB(0,0,0));

dc.SelectObject(&pen);

dc.MoveTo(arrays[0]);

for(int i=1;i<4;i++)

{

dc.LineTo(arrays[i]);

}

dc.LineTo(arrays[0]);

}

else

{

CPen pen(PS_DASHDOTDOT,2,color);

dc.SelectObject(&pen);

dc.MoveTo(arrays[0]);

for(int i=1;i<4;i++)

{

dc.LineTo(arrays[i]);

}

dc.LineTo(arrays[0]);

}

//绘制按钮文本

CString str;

GetWindowText(str);

dc.SetTextColor(RGB(255-GetRValue(color), 255-GetGValue(color),255-GetBValue(color))); dc.DrawText(str,CRect(0,0,rect.right,rect.bott om),DT_CENTER|DT_VCENTER|DT_SINGL ELINE);

}

6、为CColorButton添加属性设置函数:

void

CColorButton::SetDrawColor(COLORREF

m_color,BOOL IsShow)

{

this->color = m_color;

this->IsShow=IsShow;

}

7、为CColorButton添加

WM_LBUTTONDOWN和WM_LBUTTONUP 消息,其消息处理函数如下:

void CColorButton::OnLButtonDown(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

IsPressed = true;

CButton::OnLButtonDown(nFlags, point); }

void CColorButton::OnLButtonUp(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

IsPressed = false;

CButton::OnLButtonUp(nFlags, point);

}

8、为DrawGraphics项目的中的对话框资源拖拽如下控件,如图-6所示,并按表-1设置其相关ID;

图-6

ID 作用及类别

IDC_RADIO_RECT 矩形单选按钮

IDC_RADIO_ROUND 圆形单选按钮

IDC_RADIO_LINE 直线单选按钮

IDC_RADIO_SELF 涂鸦单选按钮

IDC_RADIO_SLOIDLINE 实线单选按钮

IDC_RADIO_DOTTEDLINE 虚线单选按钮

IDC_COMBO_LINEVALUE 线条粗细下拉列表

相关文档
最新文档