《计算机地图制图原理与方法实验报告》由会员分享,可在线阅读,更多相关《计算机地图制图原理与方法实验报告(5页珍藏版)》请在金锄头文库上搜索。
1、Windows 绘图一、实验目的:了解 windows绘图的一般过程;增强对课本基本原理的理解;以 vc+为主,学习高级语言图形编程技术二、实验过程:该实验采用 visual basic作为编程语言,首先根据 VB的特性制定一下的整体思路:主要实现曲线、圆、点、直线等图形的绘制,利用鼠标的mousemove、mousedown 、mouseup 三个事件,分情况进行处理,以此实现对不同选项的响应。界面如下:主要代码:Dim ljs As Integer 必须定义为全局变量Dim drawstate As Boolean 定义画笔状态,左键按下为有效Dim prex As Single 坐标初始
2、值,在左键按下后记录Dim prey As Single 坐标初始值,在左键按下后记录Private Sub Combo1_Change()Picture1.DrawWidth = Val(Combo1)End SubPrivate Sub Command1_Click()ljs = 1Label4.Caption = 温馨提示:请拖动鼠标左键绘制曲线,右键单击取消该操作lineEnd SubPrivate Sub Command2_Click()ljs = 2Label4.Caption = 温馨提示:单击鼠标左键确定圆心,拖动直至松开鼠标左键,右键单击取消该操作circleEnd SubP
3、rivate Sub Command3_Click()ljs = 3Label4.Caption = 温馨提示,单击鼠标左键即可pointEnd SubPrivate Sub Command4_Click()ljs = 4lineLabel4.Caption = 温馨提示:按住鼠标左键,拖动直至松开鼠标左键End SubPrivate Sub Command5_Click()Form2.ShowForm1.Visible = TrueEnd SubPrivate Sub Command6_Click()ljs = 6Label4.Caption = 注记,输入文字后,按鼠标左键确定位置Char
4、 = InputBox(请输入注记文字 , 注记, surveying)End SubPrivate Sub Form_Load()Text1 = Text2 = Label4.Caption = 欢迎使用本绘图程序,请根据提示进行操作End Sub以下为三个鼠标事件,针对前面的选项依次处理Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)分选项进行讨论If ljs = 1 ThenIf Button = 1 ThenPicture1.DrawWidth =
5、1drawstate = True 此处做一个标记prex = Xprey = YEnd IfIf Button = 2 Thenljs = 0 鼠标右键终止当前画笔End If End IfIf ljs = 2 ThenIf Button = 1 Thendrawstate = True 此处做一个标记prex = Xprey = YEnd IfIf Button = 2 Thenljs = 0 鼠标右键终止当前画笔End IfEnd IfIf ljs = 3 ThenIf Button = 1 Then Picture1.DrawWidth = 5 drawwidth 是全局属性Pictu
6、re1.PSet (X, Y)End IfIf Button = 2 Thenljs = 0End IfEnd IfIf ljs = 4 ThenIf Button = 1 Thenprex = Xprey = YEnd IfEnd IfEnd SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)Text1 = XText2 = Y显示当前坐标If ljs = 1 ThenIf drawstate = True ThenPicture1.DrawWidth
7、 = 1Picture1.Line (prex, prey)-(X, Y) 指定在 picture1 中操作prex = Xprey = YEnd IfEnd If:End SubPrivate Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)If ljs = 1 ThenIf Button = 1 Thendrawstate = FalseEnd IfEnd IfIf ljs = 2 ThenPicture1.DrawWidth = 1Dim r As SingleIf Bu
8、tton = 1 Thendrawstate = FalseEnd Ifr = Sqr(X - prex) * (X - prex) + (Y - prey) * (Y - prey)Picture1.Circle (prex, prey), rEnd IfIf ljs = 4 ThenPicture1.DrawWidth = 1If Button = 1 ThenPicture1.Line (prex, prey)-(X, Y)End IfEnd IfEnd Sub签名代码Private Sub Command1_Click()Form2.ShowForm3.Visible = FalseE
9、nd SubPrivate Sub Command2_Click()Dim i As IntegerPicture1.Scale (0, 0)-(31, 31)For i = 1 To 30Picture1.Line (i, 0)-(i, 41)Picture1.Line (0, i)-(31, i)Next iCommand3.Enabled = TrueEnd SubPrivate Sub Command3_Click()Dim i As IntegerDim j As IntegerPicture1.DrawWidth = 1For i = 1 To 30For j = 1 To 30P
10、icture1.Circle (i, j), 0.2 必须指明对 picture进行操作,默认是 form Next jNext iCommand4.Enabled = TrueEnd SubPrivate Sub Command4_Click()Label2.Caption = 李继尚个人签名Picture1.DrawWidth = 5 可通过禁止该按钮的使用防止字体过大Dim i As IntegerFor i = 2 To 9Picture1.PSet (i, 3), vbBlue 点的颜色Next iFor i = 2 To 6Picture1.PSet (6, i), vbBlueN
11、ext iFor i = 4 To 8Picture1.PSet (i, 6), vbBlueNext iPicture1.PSet (5, 4), vbBluePicture1.PSet (4, 5), vbBluePicture1.PSet (3, 6), vbBluePicture1.PSet (7, 4), vbBluePicture1.PSet (8, 5), vbBluePicture1.PSet (9, 6), vbBluePicture1.PSet (7, 7), vbBlueFor i = 8 To 11Picture1.PSet (6, i), vbBlueNext iFo
12、r i = 3 To 9Picture1.PSet (i, 9), vbBlueNext iFor i = 3 To 10Picture1.PSet (14, i), vbBlueNext iFor i = 11 To 13Picture1.PSet (i, 6), vbBlueNext iPicture1.PSet (13, 3), vbBluePicture1.PSet (13, 4), vbBlueFor i = 11 To 13Picture1.PSet (i, 8), vbBlueNext iPicture1.PSet (12, 7), vbBluePicture1.PSet (12
13、, 9), vbBluePicture1.PSet (11, 10), vbBluePicture1.PSet (12, 5), vbBlueFor i = 15 To 19Picture1.PSet (i, 6), vbBlueNext iFor i = 3 To 9Picture1.PSet (17, i), vbBlueNext iPicture1.PSet (15, 4), vbBluePicture1.PSet (16, 5), vbBluePicture1.PSet (19, 4), vbBluePicture1.PSet (18, 5), vbBluePicture1.PSet
14、(16, 7), vbBluePicture1.PSet (15, 8), vbBluePicture1.PSet (18, 7), vbBluePicture1.PSet (19, 8), vbBlueFor i = 14 To 19Picture1.PSet (i, 10), vbBlueNext iFor i = 5 To 10Picture1.PSet (23, i), vbBlueNext iPicture1.PSet (24, 4), vbBluePicture1.PSet (23, 3), vbBluePicture1.PSet (26, 4), vbBluePicture1.P
15、Set (27, 3), vbBluePicture1.PSet (23, 5), vbBluePicture1.PSet (23, 10), vbBlueFor i = 5 To 10Picture1.PSet (28, i), vbBlueNext iPicture1.PSet (27, 9), vbBlueFor i = 23 To 28Picture1.PSet (i, 5), vbBlueNext iFor i = 2 To 5Picture1.PSet (25, i), vbBlueNext iPicture1.PSet (25, 7), vbBluePicture1.PSet (
16、26, 7), vbBluePicture1.PSet (25, 8), vbBluePicture1.PSet (26, 8), vbBlueEnd SubPrivate Sub Form_Load()Text1 = Text2 = Command3.Enabled = FalseCommand4.Enabled = FalseLabel2.Caption = End SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)Text1 = XText2 = YEnd Sub四、实验结果:五、实验体会:熟练运用 visual basic,编写了简单的绘图程序。