VC++程序设计考试试题作业_第1页
VC++程序设计考试试题作业_第2页
VC++程序设计考试试题作业_第3页
VC++程序设计考试试题作业_第4页
VC++程序设计考试试题作业_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

四、使用MFC编写带菜单和工具栏的文本框编辑程序,支持复制、剪切和粘贴

功能,以及文件打开、保存功能。(20分)

资源列表:

编程资源资源类别标题ID关联变量类型关联变量名称

MENU菜单IDR_MENU1MENU

DIALOG对话框NotePadIDD_NOTEPAD_DIALOGCNotePadDlg

DIALOG

菜单-打开子菜单打开ID_FILE_OPENCFileDialogfiledig

菜单-保存子菜单保存ID_FILE_SAVECFilefile

菜单-另存子菜单另存为ID_FILE_SAVE_CFileDialogfiledig

为ASCFilefile

菜单-退出子菜单退出ID_FILE_EXITEndDialogEndDialog

菜单-复制子菜单复制ID_EDIT_COPYCEdit*pEdit

菜单-粘贴子菜单粘贴ID_EDIT_PASTECEdit*pEdit

菜单-剪切子菜单剪切ID_EDIT_CUTCEdit*pEdit

菜单-删除子菜单删除ID_EDIT_CLEARCEdit*pEdit

菜单-撤销子菜单撤销ID_EDIT_UNDOCEdit*pEdit

程序运行效果:

主界面:

•NotePad—□X

文件(F)编辑(E)的(。)帮助(H)

这是文本编辑器!1

V

打开、保存、另存为效果:

•NotePad

文件(F)编辑(E)格式(O)帮助(H)

♦NotePad

文件(F)购(E)鹏(0)帮助(H)

这是文本编辑器

复制、粘贴、,剪切效果:

•NotePad—□X

文件(F)否(E)格式(0)帮助(H)

1^^撤销(UCtrl+Z)------------------------------------------------------------------

里切(X)Ctrl+X

复制(C)Ctrl+C

粘贴(P)Ctrl+V

删除(D)DEL

遗Ctrl+A

日期(D)F5

除此之外还实现了全选功能、删除功能,可以全选文本内容和删除内容,还实现了撤销等功

能。

程序主要代码:

〃重载OnCloseO实现X的退出功能

voidCNotePadDlg::OnClose()

{

OnFileExitO;〃这里调用菜单下的退出函数

//EndDialog(IDCANCEL);

//CDialog::OnClose();

)

〃实现菜单栏目下复制的功能

voidCNotePadDlg::OnEditCopy()

(

CEdit*pEdit=(CEdit*)GetDlgItem(IDC_TEXT);

pEdit->Copy();

)

〃实现菜单栏目下删除的功能

voidCNotePadDlg::OnEditClear()

(

CEdit*pEdit=(CEdit*)GetDlgItem(IDC_TEXT);

pEdit->Clear();

)

〃实现菜单栏目下撤销的功能

voidCNotePadDlg::OnEditUndo()

CEdit*pEdit=(CEdit*)GetDlgItem(IDC_TEXT);

pEdit->Undo();

}

〃实现菜单栏目下剪切的功能

voidCNotePadDlg::OnEditCut()

(

CEdit*pEdit=(CEdit*)GetDlgItem(IDC_TEXT);

pEdit->Cut();

)

〃实现菜单栏目下全选的功能

voidCNotePadDlg::OnEditSelectAll()

(

CEdit*pEdit=(CEdit*)GetDlgItem(IDC_TEXT);

pEdit->SetSel(0,-1);

)

〃实现菜单栏目下粘贴的功能

voidCNotePadDlg::OnEditPaste()

CEdit*pEdit=(CEdit*)GetDlgItem(IDC_TEXT);

pEdit->Paste();

)

〃实现菜单栏目下时间的功能

voidCNotePadDlg::OnEditDate()

(

CTimet=CTime::GetCurrentTime();

CStringstr二t.Format(,Z%Y年%8月%d日%H:%M:%S〃);

CEdit*pEdit=(CEdit*)GetDlgItem(IDC_TEXT);

pEdit->ReplaceSel(str,TRUE);

}

〃实现移动窗口大小的功能;记得修改窗口属性当中的值

voidCNotePadDlg::OnSize(UINTnType,intex,intcy)

(

CDialog::0nSize(nType,ex,cy);

CWnd*pEdit=GetDlgItem(IDC_TEXT);

if(pEdit)

pEdit->MoveWindow(0,0,ex,cy);

)

〃实现菜单下退出的功能

voidCNotePadDlg::OnFileExit()

(

if(Prompt()=0)〃如果等于0,代表选择了取消,那么不关闭对话框

(

〃不做任何处理

}

else〃如果不等于0那么代表选择了否直接关闭对话框

(

EndDialog(IDCANCEL);

}

)

〃实现菜单栏目下打开的功能

voidCNotePadDlg::0nFile0pen()

〃过滤器

LPCTSTRszFilter="文本文件(*.txt)|*.txt|所有文件

〃打开一个文件选择对话框TRUE代表打开文件

CFileDialogfiledlg(TRUE,"txt","11",OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST,

szFilter);

if(IDCANCEL==filedig.DoModalO)

return;

〃打开文件并显示到IDC_TEXT当中

OpenFile(filedig.GetPathName(),filedig.GetFileName());

)

〃实现菜单栏目下保存的功能

voidCNotePadDlg::OnFileSave()

(

〃如果要保存的文件是第一次保存,那么就转换到另存为

if(m_szCurrentFile.GetLength0--0)

(

OnFileSaveAs();

return;

}

CFilefile;

if(file.Open(m_szCurrentFile,CFile::modeWrite|CFile::modeCreate)==0)

(

OnFileSaveAs();

return;

CStringszText;

GetDlgltemText(IDC_TEXT,szText);〃得到Edit控件里面的内容

file.Write(szText,szText.GetLength());〃写入file对象

file.Close();〃关闭对象

CEdit*pEdit=(CEdit*)GetDlgltem(IDC_TEXT);

pEdit->SetModify(FALSE);〃FALSE表示文本没有改变;这里直接保存,点击退出的时候不要再提示

改变

)

〃实现菜单栏目下另存为的功能

voidCNotePadDlg::OnFileSaveAs0

(

LPCTSTRszFilter=〃文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||〃;

〃初始化文件对话框FALSE代表保存文件

CFileDialogfiledlg(FALSE,〃11〃,0FN_0VERWRITEPROMPT|OFN_PATHMUSTEXIST|

OFN_FILEMUSTEXIST|OFN_CREATEPROMPT,szFilter);

〃打开文件对话框

if(IDCANCEL==filedig.DoModal())

return;

〃得到文件对话框中选择文件的路径名

CStringszFile=filedig.GetPathName0;

〃声明一个CFile对象

CFilefile;

〃打开文件

if(file.Open(szFile,CFile::modeWrite|CFile::modeCreate)==0)

(

MessageBox(filedig.GetFileName()+〃保存文件时失败!〃,NULL,MB_ICONEXCLAMATION);

return;

}

〃当前文件为该文件,保存下来

m_szCurrentFile二szFile;

CStringstrText;

〃得到IDCJTEXT控件里面的内容

GetDlgltemText(IDC_TEXT,strText);

〃文件写入,第一个参数是要写入的内容,第二个是写入内容的长度

file.Write(strText,strText.GetLength0);

file.Flush();〃上面的解释跟清除了,我看这个就明白了,相信你也一样

file.Close。;〃关闭文件,删除对象!

CEdit*pEdit=(CEdit*)GetDlgItem(IDC_TEXT);

pEdit->SetModify(FALSE);

SetTitle();

)

〃处理文件修改的情况

BOOLCNotePadDlg::Prompt()

(

CEdit*pEdit=(CEdit*)GetDlgItem(IDC_TEXT);

if(pEdit->GetModify())〃如果文件被修改

(

CStringstr;

if(m_szCurrentFile.IsEmpty())〃如果当前的文件为空,则str二无标题

str二〃无标题〃;

else

str=m_szCurrentFile;〃否则就是现在打开文件的Path

intnRet二MessageBox(str+〃\r\n已经被修改,是否保存?〃,〃提示消息〃,

MB_YESNOCANCEL|MB_ICONEXCLAMATION);

if(IDCANCEL=nRet)/.口果选择了取消,那么不做任何处理,也不关闭对话框(在退出函数

中做处理)

returnFALSE;

if(IDNO==nRet)〃如果选择了否直接关闭对话框(在退出函数当中做处理)

returnTRUE;

else〃如果选择了是保存文件

OnFileSave();

}

returnTRUE;

)

〃设置上面的标题

voidCNotePadDlg::SetTitle0

(

CStringstr;

if(m_szCurrentFile.IsEmpty())

str=〃无标题";

else

str=m_szCurrentFile;

inti=str.ReverseFind(,W);〃反向找到\\

if(i>0)

str=str.Mid(i+1);〃从\\位置处截出str后面的内容

SetWindowText(str);

五、使用API编写绘图程序如下图。(20分)

要求:在“形状”列表框中选择要绘制图形,在“笔颜色”下拉列表框选择画笔的颜色,

在“刷子颜色”下拉列表框中选择画刷的颜色。在“线型”组合框选择画笔的线型,在“填

充类型”中选择画刷填充类型。单击“绘图”按钮按照前面的选项绘制图形,单击“退出”

按钮退出程序。

资源列表:

关联变量

资源名称资源类别标题ID号消息响应函数

变量类型变量名称

afx_msgvoid

绘图形状列表框控件形状IDC_LIST1CStringm_DrawType;

OnSelchangeLis11();

afx_msgvoid

笔颜色下拉框控件笔颜色IDC_C0MB01CStringmoutColoronRadioBtnGrouplClickedO;

刷子颜afx_msgvoid

刷子颜色下拉框控件IDC_C0MB02CStringm_inColor

色onRadioBtnGroup2Clicked();

RadioIDM_LINE_STYL

实线

buttonE_S0LID

RadioIDM_LINE_STYL

虚线

线型buttonE_DASHafx_msgvoid

Intm_penType

RadioIDM_LINE_STYLonRadioBtnGroupIClickedO;

点线

buttonE_D0T

RadioIDM_LINE_STYL

点划线

buttonE_DASHD0T

Radio实体刷

PS_S0LID

button子

Radio

交叉线HS_CROSS

buttonafx_msgvoid

填充类型Intm_brushType

Radio主对角onRadioBtnGroup2C1ieked();

HS_FDIAGONAL

button线型

Radio附对角

HS_BDIAGONAL

button线型

程序运行效果:(以黑色为背景)

绘制线:

©SOM©SolidBrush

ODashOCross

UDotOFDiagonal

|绘图|取消

°DashDotOBDiagonal

绘制圆:

绘制矩形:

4参数绘图X

⑥Sold@SoMBrush

ODashOCross

ODot

OFDiagonal

ODashDot绘图取消

OBDiagonal

绘制圆角矩形

4参骏图x

®Solid@SolidBrush

ODashOCross

ODot

OFDiagonal

绘图|取消

ODashDot

OBDiagonal□

程序代码:

变量定义部分:

protected:

EICONm_hlcon;

CBrushmjmish;〃用于自定义颜色

CDCm_memDC;〃屏幕DC兼容的内存DC

CBitmapm_Bnip;〃位图

CWnd*m_pDrawWnd;〃用于保存静态文本框的对象指针

//初始化和双缓冲相关的数据

voidInitialDBB();

〃双缓冲内存上绘图

voidDrawOnMem();

〃在静态区域画图

voidDrawOnStaticArea();

〃更改颜色的消息响应函数

afx_msgHBRUSHOnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor);

//生成的消息映射函数

virtualBOOLOnlnitDialogO;

afx_msgvoidOnSysCommand(UINTnID,LPARAM1Param);

afx_msgvoidOnPaint0;

afx_msgHCURSOROnQueryDraglconO;

DECLARE_MESSAGE_MAP()

public:

//控制笔颜色的下拉框列表变量

CComboBoxm_Comboboxl;

//控制刷子曲色的下拉框列表变量

CComboBoxm_Combobox2;

//形状列表

CListBoxm_ShapeList;

//画笔类感即轮廓(索引)

intm_penType;

//画前类型,即填充颜色类型

intmbrushType;

afx_msgvoidOnBnClickedOk();

afx_msgvoidOnBnClickedCancel();

afx_msgvoidonRadioBtnGrouplClicked0;

afx_msgvoidonRadioBtnGroup2Clicked0;

//绘制的图形类型

CStringmDrawType;

afx_msgvoidOnSelchangeListl();

afx_msgvoidOnCbnSe1changeCombo1();

afx_msgvoidOnCbnSe1changeCombo2();

//bool变量,用于控制绘图按钮点击后绘图

boolisDraw;

//外轮廓颜色

CStringmoutColor;

//内填充凝色

CStringm_inColor;

COLORREFoutColor;

COLORREFinColor;

CPenmyPen;

CBrushmyBrush;

其他主要代码:

〃双缓冲内存上绘图

voidCfiveDlg::DrawOnMem()

(

CRectrect;

〃画图部分-------------------------------------------------------------

if(isDraw二二true)

(

CBrush*pOldBrush二m_memDC.SelectObject(&myBrush);

〃设置绘制图形

CRectdrawRect;

drawRect.left=rect.left+30;

drawRect.right=rect.right-30;

drawRect.top=rect.top+30;

drawRect.bottom=rect.bottom-30;

if(m_DrawType=="Circle")

(

m_inemDC.Ellipse(drawRect);〃画椭圆

}

if(m_DrawType=="Rectangle")

(

m_inemDC.Rectangle(drawRect);〃画矩形

}

if(m_DrawType==〃Line〃)〃画线

(

m_inemDC.MoveTo(rect.right-40,rect.bottom-40);

m_memDC.LineTo(rect.left+40,rect.top+40);

}

if(m_DrawType==,/RoundRectangle,/)〃画圆角矩形

(

CRectr;

r=CRect(CPoint(40,40),CSize(150,12));

m_memDC.RoundRect(drawRect,CPoint(50,50));//CPoint(50,50))表示圆角的幅度

}

m_memDC.SelectObject(pOldPen);

m_memDC.SelectObject(pOldBrush);

}

)

〃在静态区域画图

voidCfiveDlg::DrawOnStaticArea()

(

CWnd*pWnd=GetDlgItem(IDC_STATIC);〃获得静态文本框的窗口对象

CRectrect;

pWnd->GetClientRect(&rect);

CDC*pDC=pWnd->GetDC();//

DrawOnMem();

//一次性的将内存设备环境上绘制完毕的图形〃贴〃到屏幕上

pDC->BitBlt(0,0,rect.Width0,rect.Height(),&m_memDC,0,0,SRCCOPY);

pWnd->ReleaseDC(pDC);//

)

〃绘图按钮

voidCfiveDlg::0nBnClicked0k()

//TODO:在此添加控件通知处理程序代码

isDraw=true;〃点击绘制按钮后,才绘制图形

OnSelchangeListl0;

OnCbnSe1changeCombo1();

0nCbnSelchangeCombo2();

onRadioBtnGrouplClicked();

onRadioBtnGroup2Clicked();

Invalidate();〃重绘窗口

ACDialogEx::0n0K();*/

)

〃取消按钮

voidCfiveDlg::OnBnClickedCancel()

(

//TODO:在此添加控件通知处理程序代码

isDraw=false;

CDialogEx::0nCancel();

)

//radio画笔样式切换选择事件

voidCfiveDlg::onRadioBtnGroup1C1ieked0

(

//TODO:在此添加控件通知处理程序代码

UpdateData(true);〃更新界面值到变量中,必须有这句话,值才变化

switch(m_penType)

(

case0:

myPen.CreatePen(PS_SOLID,3,outColor);

break;

case1:

myPen.CreatePen(PS_DASH,3,outColor);

break;

case2:

myPen.CreatePen(PS_DOT,3,outColor);

break;

case3:

myPen.CreatePen(PS_DASHDOT,3,outColor);

break;

default:

break;

}

)

//radio刷子样式切换选择事件

voidCfiveDlg::onRadioBtnGroup2C1ieked0

(

//TODO:在此添加控件通知处理程序代码

UpdateData(true);〃更新界面值到变量中,必须有这句话,值才变化

switch(mbrushType)

{

case0:

myBrush.CreateSolidBrush(inColor);

break;

case1:

myBrush.CreateHatchBrush(HS_CROSS,inColor);

break;

case2:

myBrush.CreateHatchBrush(HS_FDIAGONAL,inColor);

break;

case3:

myBrush.CreateHatchBrush(HS_BDIAGONAL,inColor);

break;

)

)

〃listBox切换选择事件

voidCfiveDlg::OnSelchangeListl()

(

//TODO:在此添加控件通知处理程序代码

CStringstrText;

intnCurSel;

nCurSel=m_ShapeList.GetCurSel();//获取当前选中列表项

m_ShapeList.GetText(nCurSel,strText);//获取选中列表项的字符串

m_DrawType=strText;〃赋给变量

)

//combobox1画笔颜色切换选择事件

voidCfiveDlg::OnCbnSelchangeCombol()

(

//TODO:在此添加控件通知处理程序代码

CStringstrText;

intnCurSel;

nCurSel=m_Comboboxl.GetCurSel();//获取当前选中列表项

m_Comboboxl.GetLBText(nCurSel,strText);//获取选中列表项的字符串

moutColor=strText;

if(m_outColor二二〃Red〃)

outColor=RGB(255,0,0);

elseif(m_outColor==〃Blue〃)

outColor=RGB(0,0,255);

elseif(m_outColor==〃Green〃)

outColor=RGB(0,255,0);

else

outColor=RGB(0,0,0);

)

//combobox2刷子颜色切换选择事件

voidCfiveDlg::0nCbnSelchangeCombo2()

(

//TODO:在此添加控件通知处理程序代码

CStringstrText;

intnCurSel;

nCurSel=m_Combobox2.GetCurSel();//获取当前选中列表项

m_Combobox2.GetLBText(nCurSel,strText);//获取选中列表项的字符串

m_inColor=strText;

if(m_inColor==〃Red〃)

inColor=RGB(255,0,0);

elseif(m_inColor二二〃Blue〃)

inColor=RGB(0,0,255);

elseif(m_inColor==〃Green〃)

inColor=RGB(0,255,0);

else

inColor=RGB(0,0,0);

)

六、编写MFC单因子y=f(x)测试数据处理程序,要求有数据输入、保存、读入和绘图功能,

使用菜单和加速键特性,坐标轴依据数据分布而确定。(20分)

典型绘图效果如下:

注意:所有编程题要求为1)代码要有注释,便于理解,规格要正确。2)要列出程序界面

和运行效果。3)列表显示所有编程资源,包括名称,标题,ID号,资源类别,关联变量类

型,关联变量名称,消息响应函数名称。4)程序界面和运行效果可打印,其它全部手写,

打印者扣分。

资源列表:

资源关联变量

资源类名标题ID号消息响应函数

类别变量类型变量名称

CFileDialogdig

CTestData子菜打开txtID_FILE_

CStringfilePathNamevoidCTestDataDrawView::OnFi1eOpen()

DrawView单数据OPEN

CStringfileName

CFileDialogdig

CTestData子菜另存为ID_FILE_

CStringfilePathNamevoidCTestDataDrawView::OnFileSaveAs()

DrawView单txtSAVE_AS

CStringfileName

CTestData子菜ID_MENUI

添加数据AddTestDatadigvoidCTestDataDrawView::OAddTestData()

DrawView单TEM32771

CTestData子菜ID_MENUI

清除数据//voidCTestDataDrawView::OnDataClear()

DrawView单TEM32772

CTestData子菜页面范围ID_MENUI

ViewSetdigvoidCTestDataDrawView::OnViewSet()

DrawView单设置TEM32773

CTestData子菜数据样式ID_MENUI

StyleSetdigvoidCTestDataDrawView::OnStyleSet()

DrawView单设置TEM32774

AddTestDa对话添加测试IDD_DIALdoubleInPutX对话框“添加”按钮对应的消息响应函数:

ta框数据OGIdoubleInPutYvoidAddTestData::0nAdd()

doublev_xmin,v_xmax

对话页面范围IDD_DIAL对话框“确定”按钮对应的消息响应函数:

ViewSet

框设置0G2doublev_ymin,v_ymaxvoidViewSet::0n0K()

COLORREFSetColor对话框“点颜色”按钮对应消息响应函数

对话数据颜色IDD_DIALvoidStyleSet::OnDataColor()

StyleSetCOLORREFs_color

框设置0G3对话框“确定”按钮对应的消息响应函数:

IntS_rvoidStyleSet::0n0K()

程序运行效果:

______________________________________图:程序运行界面

国TestDataDraw-[TestDal]

因文件(日书(E)查看(V)窗C1(W)帮助(H[数—制设置

口尸IH「电色|昌曾

K

A

图:第一步页面范围设置

国TestDataDraw-[TestDal]

囱文件(F)辐(E)查看(V)窗口(Wj帮助(H)数一制设置

图:第二步添加测试数据

笏TestDataDraw-[TestDal]

因文件(F)编本(E)查看(V)窗口(77)帮助(H)数3■制设置

Da;BM电信|昌智

图:添加题目中的5个数据效果图

图:设置点数据的半径和颜色

文件(F)编辑(E)格式(O)帮助(H)

7800^200^1800^200^

5

1891.251888.97

1884.71873

1883.581897.98

1895.111906.45

1906.171912.89

图:将点数据保存为txt格式文件

图:清除数据

9TestDataDraw-[TestDal]|dI!回||次

中文件(F)『(E)查看(V)^窗口(W)帮助(H)数触制设置口网八

口苏口函1昌2

Y

A

图:打开保存的txt文件

源代码:

voidCTestDataDrawView::OAddTestData()

//TODO:Addyourcommandhandlercodehere

AddTestDatadig;

if(IDOK==dig.DoModal())

if(dig.InPutX>pro->xMin&&dig.InPutX<pro->xMax&&dig.InPutY>pro->yMin&&

dig.InPutY<pro->yMax)

(

pro->xArray.push_back(dlg.InPutX);

pro->yArray.push_back(dlg.InPutY);

}

else

(

MessageBox(〃数值超出范围〃);

return;

}

Invalidate();

}

voidCTestDataDrawView::OnViewSet()

(

//TODO:Addyourcommandhandlercodehere

ViewSetdig;

if(IDOK==dig.DoModal())

(

pro->xMin=dig.v_xmin;

pro->xMax=dig.v_xmax;

pro->yMin=dig.v_ymin;

pro->yMax=dig.v_ymax;

}

Invalidate();

)

voidCTestDataDrawView::OnStyleSet0

(

//TODO:AddyourcommandhandlercodehereDataStyleSetdigs;

StyleSetdig;

if(IDOK==dig.DoModal())

(

pro->m_Color=dig.s_color;

pro->radius=dig.s_r;

}

Invalidate();

)

voidCTestDataDrawView::OnDataClear()

(

//TODO:Addyourcommandhandlercodehere

pro->xArray.clear();

pro->yArray.clear();

Invalidate();

)

voidCTestDataDrawView::0nFileOpen0

{

//TODO:Addyourcommandhandlercodehere

CFileDialogdig(TRUE);

dig.m_ofn.IpstrDefExt二〃txt〃;

dig.m_ofn.IpstrFiIter二〃DrawingFiles(*.txt)\0*.txt\0〃;

if(dlg.DoModal0!=ID0K)

return;

CStringfilePathName=dlg.GetFileName0;

CStringfileName=filePathName.GetBuffer(filePathName.GetLengthO);

pro->ReadFromTextFile(fileName);

Invalidate();

voidCTestDataDrawView::OnFileSaveAs()

(

//TODO:Addyourcommandhandlercodehere

CFileDialogdig(FALSE);

dig.m_ofn.IpstrDefExt二〃txt〃;

dig.m_ofn.IpstrFiIter二〃DrawingFiles(*.txt)\0*.txt\0〃;

if(dlg.DoModal0!=ID0K)

return;

CStringfilePathName=dlg.GetFileName0;

CStringfileName=filePathName.GetBuffer(filePathName.GetLengthO);

pro->WriteToTextFile(fileName);

)

ttpragmaonce

#include<vector>

usingnamespacestd;

classCMyTestDataDrawView;

〃点坐标为实际坐标

classproject

(

public:

CStringm_projectName;//4

intprojectNameLength;

BOOLm_projectDisplay;//4

std::vector<double>yArray;

std::vector<double>xArray;

intactiveLayerlndex;〃当前激活图层序号4

RECTrect;//绘图区域大小

doublexMin,xMax,yMin,yMax;//数据区域大小

doublexLower;//x下限

doublexUpper;//x上限

doubleyLower;〃y下限

doubleyUpper;〃y上限

COLORREFm_Color;//colorofanproject

CRectmEnclosingRect;//

intradius;

public:

project();

"project();

voidDraw(CDC*pDC);

voidSetRect(RECTrec);//设置绘图区域

intGetActiveLayerlndex()

returnactiveLayerlndex;

voidWriteToTextFile(CStringfilename);

voidReadFromTextFile(CStringfilename);

);

ttinclude〃stdafx.h〃

ttinclude^TestDataDraw.h〃

ttinclude“project.h〃

ttinclude^TestDataDrawView.h〃

ttinclude<fstream>

project::project()

(

m_projectName=〃myproject〃;

m_projectDisplay=TRUE;

activeLayerIndex=0;

xMax=100;

xMin=0;

yMax=100;

yMin=0;

m_Color=RGB(255,0,0);//colorofanproject

radius=5;

)

project::project()

(

intnum=xArray.size();

if(num>0)

(

doublex=NULL;

doubley=NULL;

for(inti=num-l;i>-l;i--)

(

x=xArray.at(i);

y=yArray.at(i);

}

xArray.clear();

yArray.clear();

}

);

voidproject::SetRect(RECTrec)

(

rect=rec;

}

voidproject::Draw(CDC*pDC)

(

CPen*newPen=newCPen(0,1,RGB(0,0,0));

CPen*oldPen=pDC->Select0bject(newPen);

LOGFONTfont;

font.IfHeight=-20;

font.IfEscapement=0;

font.Ifltalic=1;

font.IfWeight=FW_B0LD;〃加粗

font.IfUnderline=0;//不加下划线

font.IfStrikeOut=0;//无删除线

font.IfCharSet=0;//选择字符集

pDC->SelectObject(CreateFontIndirect(&font));

pDC->SetBkMode(0);

intx,y;

//---------------绘制坐标轴----------------------〃

font.IfHeight=-16;

font.IfCharSet=134;

pDC->SelectObject(CreateFontIndirect(&font));

〃\**********y轴

pDC->MoveTo(rect.left+(rect.right-rect.left)/2,rect.bottom-50);

pDC->LineTo(rect.left+(rect.right-rect.left)/2,rect.top+50);

pDC->Text0ut(rect.left+(rect.right-rect.left)/2,rect.top+30,〃Y〃);

//箭头

pDC->MoveTo(rect.left+(rect.right-rect.left)/2,rect.top+50);

pDC->LineTo(rect.left+(rect.right-rect.left)/2+5,rect.top+60);

pDC->MoveTo(rect.left+(rect.right-rect.left)/2,rect.top+50);

pDC->LineTo(rect.left+(rect.right一rect.left)/2-5,rect.top+60);

〃\**********x轴

pDC->MoveTo(rect.left+60,rect.bottom-(rect.bottom-rect.top)/2);

pDC->LineTo(rect.right-60,rect.bottom-(rect.bottom-rect.top)/2);

pDC->Text0ut(rect.right-50,rect.bottom-(rect.bottom-rect.top)/2,〃X〃);

//箭头

pDC->MoveTo(rect.right-60,rect.bottom-(rect.bottom-rect.top)/2);

pDC->LineTo(rect.right-70,rect.bottom-(rect.bottom-rect.top)/2+5);

pDC->MoveTo(rect.right-60,rect.bottom-(rect.bottom-rect.top)/2);

p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论