VC 60 下MFC基于对话框 绘制图形Word格式.docx

上传人:b****1 文档编号:5199773 上传时间:2023-05-04 格式:DOCX 页数:23 大小:145.59KB
下载 相关 举报
VC 60 下MFC基于对话框 绘制图形Word格式.docx_第1页
第1页 / 共23页
VC 60 下MFC基于对话框 绘制图形Word格式.docx_第2页
第2页 / 共23页
VC 60 下MFC基于对话框 绘制图形Word格式.docx_第3页
第3页 / 共23页
VC 60 下MFC基于对话框 绘制图形Word格式.docx_第4页
第4页 / 共23页
VC 60 下MFC基于对话框 绘制图形Word格式.docx_第5页
第5页 / 共23页
VC 60 下MFC基于对话框 绘制图形Word格式.docx_第6页
第6页 / 共23页
VC 60 下MFC基于对话框 绘制图形Word格式.docx_第7页
第7页 / 共23页
VC 60 下MFC基于对话框 绘制图形Word格式.docx_第8页
第8页 / 共23页
VC 60 下MFC基于对话框 绘制图形Word格式.docx_第9页
第9页 / 共23页
VC 60 下MFC基于对话框 绘制图形Word格式.docx_第10页
第10页 / 共23页
VC 60 下MFC基于对话框 绘制图形Word格式.docx_第11页
第11页 / 共23页
VC 60 下MFC基于对话框 绘制图形Word格式.docx_第12页
第12页 / 共23页
VC 60 下MFC基于对话框 绘制图形Word格式.docx_第13页
第13页 / 共23页
VC 60 下MFC基于对话框 绘制图形Word格式.docx_第14页
第14页 / 共23页
VC 60 下MFC基于对话框 绘制图形Word格式.docx_第15页
第15页 / 共23页
VC 60 下MFC基于对话框 绘制图形Word格式.docx_第16页
第16页 / 共23页
VC 60 下MFC基于对话框 绘制图形Word格式.docx_第17页
第17页 / 共23页
VC 60 下MFC基于对话框 绘制图形Word格式.docx_第18页
第18页 / 共23页
VC 60 下MFC基于对话框 绘制图形Word格式.docx_第19页
第19页 / 共23页
VC 60 下MFC基于对话框 绘制图形Word格式.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

VC 60 下MFC基于对话框 绘制图形Word格式.docx

《VC 60 下MFC基于对话框 绘制图形Word格式.docx》由会员分享,可在线阅读,更多相关《VC 60 下MFC基于对话框 绘制图形Word格式.docx(23页珍藏版)》请在冰点文库上搜索。

VC 60 下MFC基于对话框 绘制图形Word格式.docx

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)

{

//创建一个位图画刷

CBrushbrush(color);

dc.SelectObject(&

brush);

CPenpen(PS_NULL,1,color);

pen);

dc.Rectangle(rect);

if(IsPressed)

{

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

dc.SelectObject(&

dc.MoveTo(arrays[0]);

for(inti=1;

i<

4;

i++)

{

dc.LineTo(arrays[i]);

}

dc.LineTo(arrays[0]);

}

else

CPenpen(PS_DASHDOTDOT,2,color);

//绘制按钮文本

CStringstr;

GetWindowText(str);

dc.SetTextColor(RGB(255-GetRValue(color),255-GetGValue(color),255-GetBValue(color)));

dc.DrawText(str,CRect(0,0,rect.right,rect.bottom),DT_CENTER|DT_VCENTER|DT_SINGLELINE);

}

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

voidCColorButton:

:

SetDrawColor(COLORREFm_color,BOOLIsShow)

{

this->

color=m_color;

IsShow=IsShow;

7、为CColorButton添加WM_LBUTTONDOWN和WM_LBUTTONUP消息,其消息处理函数如下:

OnLButtonDown(UINTnFlags,CPointpoint)

//TODO:

Addyourmessagehandlercodehereand/orcalldefault

IsPressed=true;

CButton:

OnLButtonDown(nFlags,point);

OnLButtonUp(UINTnFlags,CPointpoint)

IsPressed=false;

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

线条粗细下拉列表

IDC_STATIC_LINEEXAMPLE

显示线条粗细的Picture控件

IDC_CHECK_BORDER

是否有边界复选框

IDC_RADIO_SOLID

填充单选按钮

IDC_RADIO_GRADIENT

渐变单选按钮

IDC_RADIO_NULL

无填充单选按钮

IDC_BUTTON_FORECOLOR

前景色按钮

IDC_BUTTON_BKCOLOR

背景色按钮

IDC_RADIO_PEN

画笔单选按钮

IDC_RADIO_CLEAR

清空画板单选按钮

IDC_STATIC_GRAPHICS

画板区(Picture控件)

表-1

9、打开类向导,按图-7所示,为相关控件添加关联成员:

10、在CDrawGraphicsDlg类的OninitDialog函数中添加初始化代码:

BOOLCDrawGraphicsDlg:

OnInitDialog()

/*.........省略无关代码..........

.....................................................*/

Addextrainitializationhere

CButton*cb;

//设置相关按钮的默认选中状态

cb=(CButton*)GetDlgItem(IDC_RADIO_RECT);

cb->

SetCheck

(1);

cb=(CButton*)GetDlgItem(IDC_RADIO_SLOIDLINE);

cb=(CButton*)GetDlgItem(IDC_CHECK_BORDER);

cb=(CButton*)GetDlgItem(IDC_RADIO_SOLID);

cb=(CButton*)GetDlgItem(IDC_RADIO_PEN);

m_ComboLineValue.SetCurSel(3);

m_ForeColor=RGB(255,0,0);

m_BkColor=RGB(0,0,255);

m_ForeCButton.SetDrawColor(m_ForeColor,TRUE);

//设置前背景色按钮的颜色

m_BkCButton.SetDrawColor(m_BkColor,TRUE);

m_IsPressed=FALSE;

m_nWidth=4;

m_nPenStyle=PS_SOLID;

returnTRUE;

//returnTRUEunlessyousetthefocustoacontrol

10、为CDrawGraphicsDlg添加WM_LBUTTONDOWN和WM_LBUTTONUP,WM_MOUSEMOVE消息,其消息处理函数如下:

voidCDrawGraphicsDlg:

m_IsPressed=TRUE;

SetCursor(m_Hcursor);

if(IsDlgButtonChecked(IDC_RADIO_SELF))

{

m_pOld=point;

}

elseif(IsDlgButtonChecked(IDC_RADIO_LINE))

m_PointOrigin=point;

}elseif(IsDlgButtonChecked(IDC_RADIO_RECT))

}elseif(IsDlgButtonChecked(IDC_RADIO_ROUND))

CDialog:

ClipCursor(NULL);

//解除鼠标的限定

CClientDCdc(this);

CPenpen(m_nPenStyle,m_nWidth,m_ForeColor);

dc.SelectObject(&

if(IsDlgButtonChecked(IDC_RADIO_LINE))//选择的为画直线

{

dc.SetROP2(R2_NOT);

//逆转当前屏幕颜色来画线的绘图方式

dc.MoveTo(m_PointOrigin);

dc.LineTo(m_pOld);

//擦去上一次的临时线

dc.SetROP2(R2_COPYPEN);

//缺省绘图模式,像素为画笔颜色

dc.LineTo(point);

//绘制固定线

elseif(IsDlgButtonChecked(IDC_RADIO_RECT))//选择的为画矩形

dc.SelectObject(GetStockObject(NULL_BRUSH));

//选择空话刷

dc.SetROP2(R2_NOT);

CRectOldrect(m_PointOrigin,m_pOld);

dc.Rectangle(&

Oldrect);

//清除之前的矩形绘图

dc.SetROP2(R2_COPYPEN);

CBrushbrush(m_BkColor);

dc.SelectObject(&

//画这次的矩形

if(IsDlgButtonChecked(IDC_RADIO_NULL))//如果选择无填充的话,使用空画刷

CRectNowrect(m_PointOrigin,point);

Nowrect);

if(IsDlgButtonChecked(IDC_RADIO_GRADIENT))//如果选择渐变的话,调用渐变函数

DrawGradient(dc.GetSafeHdc(),Nowrect,m_ForeColor,m_BkColor,1);

}elseif(IsDlgButtonChecked(IDC_RADIO_ROUND))//如果选择绘制椭圆

dc.Ellipse(&

if(IsDlgButtonChecked(IDC_RADIO_NULL))

InvalidateMyRect();

//刷新工具区

OnMouseMove(UINTnFlags,CPointpoint)

if(m_IsPressed&

&

point.x>

205)//如果鼠标移动位置到达画板区

CRectrect;

m_Graphics.GetClientRect(&

rect);

m_Graphics.ClientToScreen(&

ClipCursor(rect);

//限定光标在指定矩形

IsDlgButtonChecked(IDC_RADIO_SELF))//如果选择了涂鸦

CPenpen(m_nPenStyle,m_nWidth,m_ForeColor);

//创建画笔

//选入画笔

dc.MoveTo(m_pOld);

//绘制轨迹

//将当前点设置为旧点

elseif(m_IsPressed&

IsDlgButtonChecked(IDC_RADIO_LINE))//如果选择了直线

//逆转当前屏幕颜色来画线的绘图方式

//擦去上一次的线

//绘制这一次的临时线

IsDlgButtonChecked(IDC_RADIO_RECT))//如果选择了矩形

CPenpen(PS_DOT,1,m_ForeColor);

dc.SelectObject(GetStockObject(HOLLOW_BRUSH));

m_pOld=point;

pen.DeleteObject();

}elseif(m_IsPressed&

IsDlgButtonChecked(IDC_RADIO_ROUND))//如果选择了圆

OnMouseMove(nFlags,point);

11、为背景色、前景色、无填充、实线、虚线、边框、清空画板按钮添加按钮单击消息,响应函数如下:

OnButtonBkcolor()

Addyourcontrolnotificationhandlercodehere

CColorDialogcdg;

if(cdg.DoModal()==IDOK)//调用颜色对话框

m_BkColor=cdg.GetColor();

//更改背景色

m_BkCButton.SetDrawColor(m_BkColor,TRUE);

//更改背景色按钮颜色

InvalidateMyRect();

//刷新工具区

OnButtonForecolor()

if(cdg.DoModal()==IDOK)

m_ForeColor=cdg.GetColor();

m_ForeCButton.SetDrawColor(m_ForeColor,TRUE);

OnRadioNull()

if(!

IsDlgButtonChecked(IDC_CHECK_BORDER))//无填充时不能也无边框

CButton*cb=(CButton*)GetDlgItem(IDC_CHECK_BORDER);

cb->

OnRadioSloidline()

CStringstr[9]={"

1px"

"

2px"

3px"

4px"

5px"

6px"

8px"

10px"

12px"

};

m_ComboLineValue.ResetContent();

for(inti=0;

9;

m_ComboLineValue.AddString(str[i]);

OnRadioDottedline()

for(inti=11;

i>

0;

i--)

m_ComboLineValue.DeleteString(i);

m_ComboLineValue.SetCurSel(0);

m_nWidth=1;

m_nPenStyle=PS_DOT;

voidCDrawGraphicsDlg:

OnCheckBorder()

if(IsDlgButtonChecked(IDC_CHECK_BORDER))

m_nPenStyle=PS_SOLID;

else

m_nPenStyle=PS_NULL;

if(IsDlgButtonChecked(IDC_RADIO_NULL))//既不能无边框也不能无填充

CButton*cb=(CButton*)GetDlgItem(IDC_CHECK_BORDER);

OnRadioClear()

Invalidate(TRUE);

12、为选择画笔宽度的下拉列表添加CBN_SELCHAGE消息,消息处理函数如下:

6

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2