上机指导书GIS软件工程.docx
- 文档编号:24200733
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:38
- 大小:3.22MB
上机指导书GIS软件工程.docx
《上机指导书GIS软件工程.docx》由会员分享,可在线阅读,更多相关《上机指导书GIS软件工程.docx(38页珍藏版)》请在冰豆网上搜索。
上机指导书GIS软件工程
上机指导书-GIS软件工程-2013
1C#用户界面、菜单、工具栏
1.1目的
了解C#可视化界面设计。
1.2练习之一:
建立第一个C#对话框程序
1、打开Visualstudio,新建一个项目。
2、填写项目名称及存放路径:
3、得到如下初步结果,解决方案“exc1”下有一个工程“exc1”,并有对话框Form1。
可在代码视图中查看对话框代码。
4、该项目有一个“program.cs”文件,该文件如下:
namespaceexc1
{
staticclassProgram
{
///
///应用程序的主入口点。
///
[STAThread]
staticvoidMain()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(newForm1());
}
}
}
这是程序的入口函数,以刚才所说的Form1对话框为启动主界面。
可以改动对话框Form1的名称,我们也可以使用另外一个对话框作为启动主界面。
程序运行如下,界面中还没有任何东西:
1.3练习之二:
给对话框程序加菜单、按钮等
1、先对我们的主对话框重命名,Form1更名为FrmMain,如右下图所示。
2、添加按钮,在左边按钮工具面板上选中需要的按钮放到对话框中来。
3、首先我们添加一个MenuStrip进来,如下所示。
把MenuStrip空间改名为:
menuMain,我们可在menuMain,上继续添加菜单项。
4、给Menu添加一个“文件”菜单子项,然后添加工具条ToolStrip,并增加两个工具条按钮,效果如下:
1.4练习之三:
利用SplitterContainer控件对主界面进行划分
1、添加splitContainer1,并把它的orientation属性设为”Horizontal”,如下图所示。
2、在上图的panel1上再添加一个SplitterContainer,并把它的orientation属性设为”Vertical”,如下图所示。
如此我们可以轻松把主界面分为三个部分。
大家可自行体会其运行效果。
1.5练习之四:
对话框按钮消息响应函数
添加textBox1、textBox2、textBox3和一个Button按钮。
双击该Button为它添加消息处理函数如下:
privatevoidbutton1_Click(objectsender,EventArgse)
{
Doubleresult=Double.Parse(textBox1.Text)+Double.Parse(textBox2.Text);
textBox3.Text=result.ToString();
}
在InitializeComponent()函数中,可以找到如下代码:
this.button1.Click+=newSystem.EventHandler(this.button1_Click);
在看Click属性的定义,
publiceventEventHandlerClick;
以及EventHandler的定义,
publicdelegatevoidEventHandler(objectsender,EventArgse);
我们可知,在C#中使用了delegate实现了消息处理。
本练习实现了实数的加法运算。
同学们可以为菜单按钮添加相应的消息处理函数,实现类似的功能。
1.6练习之五:
使用ListView控件
1、在上图的panel2上添加一个ListView控件(listView1),并把View属性设置为Details,把Dock属性设为Fill,并添加Button2、Button3,用以对ListView显示进行控制。
其效果如下。
添加button2和button3的消息响应函数如下:
privatevoidbutton2_Click(objectsender,EventArgse)
{
System.Windows.Forms.ColumnHeadercolumnHeader1;
System.Windows.Forms.ColumnHeadercolumnHeader2;
System.Windows.Forms.ColumnHeadercolumnHeader3;
System.Windows.Forms.ColumnHeadercolumnHeader4;
System.Windows.Forms.ListViewItemlistViewItem1=newSystem.Windows.Forms.ListViewItem(newstring[]{
"11222",
"1111",
"2222",
"33333"},-1);
System.Windows.Forms.ListViewItemlistViewItem2=newSystem.Windows.Forms.ListViewItem(newstring[]{
"212",
"111",
"222"},-1);
columnHeader1=newSystem.Windows.Forms.ColumnHeader();
columnHeader2=newSystem.Windows.Forms.ColumnHeader();
columnHeader3=newSystem.Windows.Forms.ColumnHeader();
columnHeader4=newSystem.Windows.Forms.ColumnHeader();
columnHeader1.Text="名称";
columnHeader1.Width=80;
columnHeader2.Text="高程";
columnHeader2.Width=100;
columnHeader3.Text="类型";
columnHeader3.Width=100;
columnHeader4.Text="管理单位";
columnHeader4.Width=100;
this.listView1.CheckBoxes=true;
this.listView1.Columns.AddRange(newSystem.Windows.Forms.ColumnHeader[]{
columnHeader1,
columnHeader2,
columnHeader3,
columnHeader4});
this.listView1.Items.AddRange(newSystem.Windows.Forms.ListViewItem[]{
listViewItem1,
listViewItem2});
listView1.Refresh();
}
privatevoidbutton3_Click(objectsender,EventArgse)
{
listView1.Items.Clear();
listView1.Columns.Clear();
}
运行效果如下:
请同学们发挥自己的想象力,用ListView展示你需要展示的数据。
1.7练习之六:
连接数据库并把数据结果展示于ListView
对练习之五进行修改,即复制exc2文件夹exc3并把里面的exc2改为exc3,以作区别。
找到两张16*16的图片,用来作为工具条按钮图片,放在exc3文件夹下的img文件夹。
下图是为工具条上的按钮设置图片。
步骤如下:
①选中要设置的工具条按钮;
②选中其image属性;
③在弹出的对话框中定位到相应图片,选择。
这里我们选择5.gif文件。
双击第一个工具条按钮,vs2005自动为它加入如下消息处理函数:
privatevoidtoolStripButton1_Click(objectsender,EventArgse)
{
}
要访问数据库,我们必须在exc3工程的引用中加入System.Data库,如下图所示,选中System.Data后确定。
之后在FrmMain.cs文件加入
usingSystem.Data;
usingSystem.Data.OleDb;
随后把按钮消息响应函数改动如下:
privatevoidtoolStripButton1_Click(objectsender,EventArgse)
{
//添加列表头
this.listView1.Items.Clear();
this.listView1.Columns.Clear();
System.Windows.Forms.ColumnHeadercolumnHeader1=newSystem.Windows.Forms.ColumnHeader();
System.Windows.Forms.ColumnHeadercolumnHeader2=newSystem.Windows.Forms.ColumnHeader();
System.Windows.Forms.ColumnHeadercolumnHeader3=newSystem.Windows.Forms.ColumnHeader();
columnHeader1.Text="OBJECTID";
columnHeader1.Width=80;
columnHeader2.Text="行政区代码";
columnHeader2.Width=100;
columnHeader3.Text="行政区名称";
columnHeader3.Width=100;
this.listView1.Columns.AddRange(newSystem.Windows.Forms.ColumnHeader[]{
columnHeader1,
columnHeader2,
columnHeader3});
//连接导数据库
stringdatabase=Application.StartupPath+@"\..\..\..\excdata\testdata.mdb";
stringstrConn=+database+";PersistSecurityInfo=False;JetOLEDB:
DatabaseLockingMode=1";
OleDbConnectioncnn=newOleDbConnection();
cnn.ConnectionString=strConn;
cnn.Open();
stringsql="selectOBJECTID,XZQDM,XZQMfromDJ_POLYGON_JD";
OleDbCommandcmd=newOleDbCommand();
//OleDbDataAdapteradapter=newOleDbDataAdapter();
cmd.Connection=cnn;
cmd.CommandText=sql;
OleDbDataReaderreader=cmd.ExecuteReader();
while(reader.Read())
{
stringobjectid=reader.GetValue(0).ToString();
stringXZQDM=reader.GetValue
(1).ToString();
stringXZQM=reader.GetValue
(2).ToString();
System.Windows.Forms.ListViewItemlistViewItem=newSystem.Windows.Forms.ListViewItem(newstring[]{objectid,XZQDM,XZQM});
listView1.Items.Add(listViewItem);
}
cnn.Close();
}
点击
程序运行效果如下:
同学们可以查阅相关资料,自己考虑实现数据删除、更新等操作。
2GDI+绘图
2.1目的
了解基于C#的GDIPlus编程。
2.2练习之一:
建立第一个GDIPlus程序
1、按照第一章的练习1,建立一个C#对话框程序。
2、添加一个按钮,并为之消息响应函数如下:
privatevoidbutton1_Click(objectsender,EventArgse)
{
Fontfnt=newFont("Tahoma",20,FontStyle.Bold|FontStyle.Italic);//创建字体
Graphicsg=this.CreateGraphics();//创建Graphics对象
g.DrawString("GDI+编程世界",fnt,newSolidBrush(Color.Blue),14,10);//输出文字
}
点击按钮则可以见到效果如下:
2.3练习之二:
使用线性坡度画刷
1,对上个例子的代码,在对话框类代码文件中添加如下:
usingSystem.Drawing.Drawing2D;
2、把button1的消息响应函数修改如下:
privatevoidbutton1_Click(objectsender,EventArgse)
{
Graphicsg=this.CreateGraphics();//生成图形对象
LinearGradientBrushMyBrush=newLinearGradientBrush(newPoint(0,20),
newPoint(20,0),Color.Yellow,Color.Blue);//生成渐变画刷
g.FillRectangle(MyBrush,0,0,200,100);//填充矩形
}
2.4练习之三:
绘制直线
把上例代码改成如下:
privatevoidbutton1_Click(objectsender,EventArgse)
{
Graphicsg=this.CreateGraphics();//生成图形对象
PenMypen=newPen(Color.Blue,5);//生成画笔,蓝色,5个像素
g.DrawLine(Mypen,1,1,30,30);//画线
Pointpt1=newPoint(1,30);//生成起点
Pointpt2=newPoint(30,1);//生成终点
g.DrawLine(Mypen,pt1,pt2);//画线
}
2.5练习之四:
绘制椭圆
privatevoidbutton1_Click(objectsender,EventArgse)
{
Graphicsg=this.CreateGraphics();//生成图形对象
PenMypen=newPen(Color.Blue,5);//生成画笔,蓝色,5个像素
g.DrawEllipse(Mypen,1,1,80,40);//画椭圆
Rectanglerect=newRectangle(85,1,165,40);//生成矩形
g.DrawEllipse(Mypen,rect);//画椭圆
}
2.6练习之五:
绘制曲线
privatevoidbutton1_Click(objectsender,EventArgse)
{
Graphicsg=this.CreateGraphics();//生成图形对象
PenMypen=newPen(Color.Blue,5);//生成画笔,蓝色,5个像素
g.DrawArc(Mypen,1,1,80,40,90,270);//
Rectanglerect=newRectangle(85,1,165,40);//生成起点
g.DrawArc(Mypen,rect,0,90);//画弧线
}
2.7练习之六:
绘制扇形
privatevoidbutton1_Click(objectsender,EventArgse)
{
Graphicsg=this.CreateGraphics();//生成图形对象
PenMypen=newPen(Color.Blue,5);//生成画笔,蓝色,5个像素
g.DrawPie(Mypen,1,1,80,40,90,270);//画扇形
Rectanglerect=newRectangle(85,1,165,40);//生成矩形
g.DrawPie(Mypen,rect,0,90);//画扇形
}
2.8练习之七:
使用GDIPlus
请看如下程序运行效果,本练习要求学会使用GDI+函数绘制矩形和椭圆:
按照练习一新建一个对话框应用程序。
为该对话框类添加如下成员:
privatePointrectangleTopLeft=newPoint(0,0);
privateSizerectangleSize=newSize(200,200);
privatePointellipseTopLeft=newPoint(50,200);
privateSizeellipseSize=newSize(200,150);
privatePenbluePen=newPen(Color.Blue,3);
privatePenredPen=newPen(Color.Red,2);
protectedoverridevoidOnPaint(PaintEventArgse)
{
base.OnPaint(e);
Graphicsdc=e.Graphics;
SizescrollOffset=newSize(this.AutoScrollPosition);
if(e.ClipRectangle.Top+scrollOffset.Width<350||
e.ClipRectangle.Left+scrollOffset.Height<250)
{
RectanglerectangleArea=newRectangle
(rectangleTopLeft+scrollOffset,rectangleSize);
RectangleellipseArea=newRectangle
(ellipseTopLeft+scrollOffset,ellipseSize);
dc.DrawRectangle(bluePen,rectangleArea);
dc.DrawEllipse(redPen,ellipseArea);
}
}
附加要求,请同学们自己查询MSDN的帮助,实现在屏幕上绘制一个三角形。
接下来,练习如何绘制彩色文本,请看效果:
程序实现过程如下:
首先按照本章练习一新建一个对话框程序。
为对话框类添加如下私有成员:
privateBrushblackBrush=Brushes.Black;
privateBrushblueBrush=Brushes.Blue;
privateFonthaettenschweilerFont=newFont("Haettenschweiler",12);
privateFontboldTimesFont=newFont("TimesNewRoman",10,FontStyle.Bold);
privateFontitalicCourierFont=newFont("Courier",11,FontStyle.Italic|
FontStyle.Underline);
在对话框类的OnPaint函数编写绘制代码如下:
protectedoverridevoidOnPaint(PaintEventArgse)
{
base.OnPaint(e);
Graphicsdc=e.Graphics;
dc.DrawString("Thisisagroovystring",haettenschweilerFont,blackBrush,
10,10);
dc.DrawString("Thisisagroovystring"+
"withsomeverylongtextthatwillneverfitinthebox",
boldTimesFont,blueBrush,
newRectangle(newPoint(10,40),newSize(100,40)));
dc.DrawString("Thisisagroovystring",italicCourierFont,blackBrush,
newPoint(10,100));
}
附加训练要求,请你用缤纷的色彩,发挥你的想象力,把本班同学的名字绘制出来,尽量突出艺术效果。
3C#与ArcGISEngine开发
熟悉了C#的开发环境之后,让我们开始ArcGISEngine之旅吧。
3.1目的
了解ArcGISEngine在.Net平台开发环境及编程技巧。
3.2练习之一:
建立第一个C#+ArcGISEngine程序
下面介绍一下MicrosoftVisualStudio2005下用C#开发ArcGISEngine桌面应用程序的流程:
1、把我们上个例程复制为exc2文件夹,exc1.sln文件变为exc2.sln,并把工程名改为exc2。
清除中间panel中的那些按钮及相应程序代码。
效果如下:
2、把SplitterContainer1控件剪切出来,然后添加一个Panel控件,把其Dock属性设为Top,然后添加一个ArcGISEngine的To
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上机 指导书 GIS 软件工程