windows绘图和水准网平差c++代码.docx
- 文档编号:11977119
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:34
- 大小:81.22KB
windows绘图和水准网平差c++代码.docx
《windows绘图和水准网平差c++代码.docx》由会员分享,可在线阅读,更多相关《windows绘图和水准网平差c++代码.docx(34页珍藏版)》请在冰豆网上搜索。
windows绘图和水准网平差c++代码
Windows绘图
#include"stdafx.h"
#include"cbs.h"
#include"cbsDoc.h"
#include"cbsView.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CCbsView
IMPLEMENT_DYNCREATE(CCbsView,CView)
BEGIN_MESSAGE_MAP(CCbsView,CView)
//{{AFX_MSG_MAP(CCbsView)
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
//}}AFX_MSG_MAP
//Standardprintingcommands
ON_COMMAND(ID_FILE_PRINT,CView:
:
OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT,CView:
:
OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW,CView:
:
OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//CCbsViewconstruction/destruction
CCbsView:
:
CCbsView()
{
//TODO:
addconstructioncodehere
this->m_bDragging=false;
}
CCbsView:
:
~CCbsView()
{
}
BOOLCCbsView:
:
PreCreateWindow(CREATESTRUCT&cs)
{
//TODO:
ModifytheWindowclassorstylesherebymodifying
//theCREATESTRUCTcs
returnCView:
:
PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
//CCbsViewdrawing
voidCCbsView:
:
OnDraw(CDC*pDC)
{
CCbsDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
//TODO:
adddrawcodefornativedatahere
/*pDC->SetMapMode(MM_TEXT);
pDC->Rectangle(CRect(50,50,100,100));//直接基于屏幕绘制
pDC->SetMapMode(MM_TEXT);
//pDC->SetWindowOrg(50,50);//屏幕左上角的坐标设置为(50,50)
pDC->Rectangle(CRect(50,50,100,100));
pDC->SetMapMode(MM_TEXT);
pDC->SetViewportOrg(50,50);//当前原点位置移动到(50,50)的位置
pDC->Rectangle(CRect(50,50,100,100));
pDC->SetMapMode(MM_TEXT);
pDC->SetViewportOrg(100,100);//当前原点位置移动到(50,50)的位置
pDC->SetWindowOrg(50,50);//当前的原点坐标设置为(50,50)
pDC->Rectangle(CRect(100,100,100,100));
pDC->SetWindowOrg(100,100);
*/
pDC->SetViewportOrg(150,150);//当前原点位置移动到(50,50)的位置
COLORREFrgbBkClr=RGB(192,192,192);//定义灰色
pDC->SetBkColor(rgbBkClr);//背景色为灰色
pDC->SetTextColor(RGB(0,0,128));//文本颜色为兰色
pDC->TextOut(250,10,"我*****的*****绘*****图*****板!
");
CPen*pPenOld,PenNew;
intnPenStyle[]={PS_SOLID,//实线
PS_DOT,//点线
PS_DASH,//虚线
PS_DASHDOT,//点划线
PS_DASHDOTDOT,//双点划线
PS_NULL,//空的边框
PS_INSIDEFRAME,//边框实线
};
char*strStyle[]={"Solid","Dot","Dash","DashDot",
"DashDotDot","Null","InsideFrame"};
pDC->TextOut(50,65,"用不同样式的画笔绘图");
pDC->TextOut(400,40,"***制作者***陈斌生***");
for(inti=0;i<7;i++)
{//用不同样式的画笔绘图
if(PenNew.CreatePen(nPenStyle[i],1,RGB(0,0,0)))
{//创建画笔
pPenOld=pDC->SelectObject(&PenNew);//选择画笔
pDC->TextOut(45,90+20*i,strStyle[i]);
pDC->MoveTo(150,100+20*i);
pDC->LineTo(200,100+20*i);
pDC->SelectObject(pPenOld);//恢复原来的画笔
PenNew.DeleteObject();//删除底层的GDI对象
}
else{MessageBox("不能创建画笔!
");}
}
char*strWidth[]={"1","2","3","4","5","6","7"};
pDC->TextOut(260,65,"用不同宽度的画笔绘图");
for(i=0;i<7;i++)
{//用不同宽度的画笔绘图
if(PenNew.CreatePen(PS_SOLID,i+1,RGB(0,0,0)))
{//创建画笔
pPenOld=pDC->SelectObject(&PenNew);//选择画笔
pDC->TextOut(260,90+20*i,strWidth[i]);
pDC->MoveTo(300,100+20*i);
pDC->LineTo(400,100+20*i);
pDC->SelectObject(pPenOld);//恢复原来的画笔
PenNew.DeleteObject();//删除底层的GDI对象
}
else{MessageBox("不能创建画笔!
");}
}
char*strColor[]={"红","绿","蓝","黄","紫","青","灰"};
COLORREFrgbPenClr[]={RGB(255,0,0),RGB(0,255,0),
RGB(0,0,255),RGB(255,255,0),RGB(255,0,255),
RGB(0,255,255),RGB(192,192,192)};
pDC->TextOut(460,65,"用不同颜色的画笔绘图");
for(i=0;i<7;i++)
{//用不同颜色的画笔绘图
CPen*pPenNew=newCPen(PS_INSIDEFRAME,10,rgbPenClr[i]);
//创建画笔的另一种方法
pPenOld=pDC->SelectObject(pPenNew);//选择创建的画笔
pDC->TextOut(460,90+20*i,strColor[i]);
pDC->MoveTo(500,100+20*i);
pDC->LineTo(600,100+20*i);
pDC->SelectObject(pPenOld);//恢复原来的画笔
deletepPenNew;//自动删除底层的GDI对象
}
}
/////////////////////////////////////////////////////////////////////////////
//CCbsViewprinting
BOOLCCbsView:
:
OnPreparePrinting(CPrintInfo*pInfo)
{
//defaultpreparation
returnDoPreparePrinting(pInfo);
}
voidCCbsView:
:
OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)
{
//TODO:
addextrainitializationbeforeprinting
}
voidCCbsView:
:
OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)
{
//TODO:
addcleanupafterprinting
}
/////////////////////////////////////////////////////////////////////////////
//CCbsViewdiagnostics
#ifdef_DEBUG
voidCCbsView:
:
AssertValid()const
{
CView:
:
AssertValid();
}
voidCCbsView:
:
Dump(CDumpContext&dc)const
{
CView:
:
Dump(dc);
}
CCbsDoc*CCbsView:
:
GetDocument()//non-debugversionisinline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CCbsDoc)));
return(CCbsDoc*)m_pDocument;
}
#endif//_DEBUG
/////////////////////////////////////////////////////////////////////////////
//CCbsViewmessagehandlers
voidCCbsView:
:
OnMouseMove(UINTnFlags,CPointpoint)
{
//TODO:
Addyourmessagehandlercodehereand/orcalldefault
if(m_bDragging)
{
CClientDCdc(this);
OnPrepareDC(&dc);
dc.DPtoLP(&point);
dc.MoveTo(this->m_ptOrigin);
dc.LineTo(point);
m_ptOrigin=point;
}
CView:
:
OnMouseMove(nFlags,point);
}
voidCCbsView:
:
OnLButtonDown(UINTnFlags,CPointpoint)
{
//TODO:
Addyourmessagehandlercodehereand/orcalldefault
CClientDCdc(this);
OnPrepareDC(&dc);//调整设备环境的属性
dc.DPtoLP(&point);//将设备坐标转换为逻辑坐标
SetCapture();//捕捉鼠标
//:
:
SetCursor(m_hCross);//设置十字光标
m_ptOrigin=point;
m_bDragging=TRUE;//设置拖拽标记
CView:
:
OnLButtonDown(nFlags,point);
}
voidCCbsView:
:
OnLButtonUp(UINTnFlags,CPointpoint)
{
//TODO:
Addyourmessagehandlercodehereand/orcalldefault
m_bDragging=false;
ReleaseCapture();
CView:
:
OnLButtonUp(nFlags,point);
}
结果
水准网平差
结果
#include
#include
#include
#include
#definemax50
classCMatrix
{
public:
CMatrix(){row=0;column=0;};//默认构造函数
CMatrix(inti,intj){row=i;column=j;}//构造函数一
CMatrix(constCMatrix&m);//复制构造函数
~CMatrix(void){/*cout<<"谢谢使用,矩阵所占空间以释放!
"< CMatrix&operator=(constCMatrix&m);//赋值运算符 booloperator==(constCMatrix&m);//比括较运算符 booloperator! =(constCMatrix&m);//比括较运算符 CMatrixoperator+(constCMatrix&m);//加运算符 CMatrixoperator-(constCMatrix&m);//减运算符 CMatrix&operator+=(constCMatrix&m);//自加运算符 CMatrix&operator-=(constCMatrix&m);//自减运算符 CMatrixoperator-();//取负数 CMatrix&operator*(constCMatrix&m);//乘法运算符 voidinput();//输入矩阵 voidoutputMatrix();//输出该矩阵 voidsetValue(introw,intcolumn,doublevalue){A[row-1][column-1]=value;}//设置(i,j)的值 doublegetValue(introw,intcolumn)const{returnA[row-1][column-1];}//设置行、列的值 voidsetRow(constinti){row=i;} intgetRow()const{returnrow;} voidsetColunm(constinti){column=i;} intgetColumn()const{returncolumn;} CMatrix&change(inti,intj);//交换矩阵的行 CMatrix&transpose();//矩阵转置 CMatrix&inverse();//矩阵求逆 voidfind(int&f)const;//判断该矩阵是否可用于迭代求解 friendvoidjocabi(constCMatrix&a);//迭代求解 voidlzys();//列主元素法求解 voidsolve();//可逆线性矩阵求解 voidqxnh();//曲线拟合 private: //成员变量 doubleA[max][max]; introw;//行 intcolumn;//列 }; voidCMatrix: : input()//输入 {cout<<"开始输入矩阵值: "< inti,j; doublez; for(i=0;i {cout<<"请输入第"< "< for(j=0;j {cin>>z; A[i][j]=z; } } cout< }; CMatrix: : CMatrix(constCMatrix&m)//复制构造函数 {inti,j; for(i=0;i for(j=0;j this->A[i][j]=m.A[i][j]; }; CMatrix&CMatrix: : operator=(constCMatrix&m)//赋值运算符 { inti,j; for(i=0;i { for(j=0;j A[i][j]=m.A[i][j]; } return*this; }; boolCMatrix: : operator==(constCMatrix&m)//比括较运算符 {inti,j,k; for(i=0;i {for(j=0;j if(this->A[i][j]=m.A[i][j])k=1; elsek=0; } if(k=1)returntrue; elsereturnfalse; }; boolCMatrix: : operator! =(constCMatrix&m)//比括较运算符 {inti,j,k; for(i=0;i {for(j=0;j if(this->A[i][j]=m.A[i][j])k=1; elsek=0; } if(k=0)returntrue; elsereturnfalse; }; CMatrixCMatrix: : operator+(constCMatrix&m)//加运算符 {inti,j; if((this->row==m.row)&&(this->column==m.column)) {for(i=0;i for(j=0;j this->A[i][j]+=m.A[i][j]; } else{cout<<"此两矩阵不能相加,请检查! "< return*this; }; CMatrixCMatrix: : operator-(constCMatrix&m)//减运算符 {inti,j; if((this->row==m.row)&&(this->column==m.column)) {for(i=0;i for(j=0;j this->A[i][j]-=m.A[i][j]; } else{cout<<"此两矩阵不能相加,请检查! "< return*this; }; CMatrix&CMatrix: : operator+=(constCMatrix&m)//自加运算符 {inti,j; for(i=0;i for(j=0;j this->A[i][j]=2*m.A[i][j]; return*this; }; CMatrix&CMatrix: : operator-=(constCMatrix&m)//自减运算符 {inti,j; for(i=0;i for(j=0;j this->A[i][j]=m.A[i][j]-m.A[i][j]; return*this; }; voidCMatrix: : find(int&f)const {inti; for(i=0;i if(this->A[i][i]! =0)f=1; elsef=0; }; CMatrixCMatrix: : operator-()//取负数 {inti,j; for(i=0;i for(j=0;j this->A[i][j]=-this->A[i][j]; return*this; }; CMatrix&CMatrix: : operator*(constCMatrix&m)//乘法运算符 {inti,j,t; CMatrixn; if(this->column==m.row) { for(i=0;i for(j=0;j {doublesum=0.0; for(t=0;t sum+=this->A[i][t]*m.A[t][j]; n.A[i][j]=sum; } } else{cerr<<"此两矩阵不能相乘,请检查! "< (1);} returnn; }; voidCMatrix: : outputMatrix()//输出该矩阵 {inti,j; for(i=1;i<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- windows 绘图 水准 网平差 c+ 代码