一、实验目的

掌握在.net环境下的绘图软件界面设计与交互技术。

二、实验准备

学习在.net环境下的界面设计的一般原理与交互技术等基本知识。

三、实验内容

将前7个实验内容集成到一个界面下,如直线段、圆、矩形与曲线的绘制填充,以及对图像的处理,并能利用交互技术实现对图元的选取、修改和交互。

四、实验过程及步骤

1、程序界面设计

2 、控件属性说明

添加mainmnue控件,属性如:左添加2个panel控件,设置panel1.name=“P”,panel2作为一个调色板

3 、程序代码

Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.Math
--------------------------------------------------------------------------------------------
Public Class Form1Dim f1 As Integer = 0Dim lp(100, 20) As PointDim lf As BooleanDim ln(100) As IntegerDim lleft As BooleanDim cp1(100) As PointDim cp2(100) As PointDim cr(100) As SingleDim cf As BooleanDim rp1(100) As PointDim rp2(100) As PointDim rf As BooleanDim l As IntegerDim c As Integer
Dim r As IntegerDim Pencolor As ColorDim lc(100) As ColorDim cc(100) As Color
Dim rc(100) As Color
--------------------------------------------------------------------------------------------Private Sub Init()Dim i, j As IntegerFor i = 0 To 100ln(i) = 0Nextlf = Truelleft = Truecf = Truerf = Truel = 0c = 0r = 0End Sub
--------------------------------------------------------------------------------------------Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadP.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3DP.Dock = DockStyle.FillP.BackColor = Color.WhiteGroupBox1.Dock = DockStyle.Right '该控件停靠在其包含控件的右边缘lRed.Text = "R"lRed.BackColor = Color.Red '获取控件的背景颜色为红色lGreen.Text = "G"lGreen.BackColor = Color.Green '获取控件的背景颜色为绿色lBlue.Text = "B"lBlue.BackColor = Color.Blue   '获取控件的背景颜色为蓝色pColor.BorderStyle = System.Windows.Forms.BorderStyle.FixedSinglepColor.BackColor = Color.BlacktrRed.Maximum = 255trRed.Minimum = 0trRed.LargeChange = 17trRed.SmallChange = 1trRed.TickFrequency = 17trRed.TickStyle = TickStyle.BottomRight '刻度线位于水平控件的底部或者垂直控件的右部trRed.Value = 0  '刚开始设置为0trGreen.Maximum = 255trGreen.Minimum = 0trGreen.LargeChange = 17trGreen.SmallChange = 1trGreen.TickFrequency = 17trGreen.TickStyle = TickStyle.BottomRighttrGreen.Value = 0 '刚开始设置为0trBlue.Maximum = 255trBlue.Minimum = 0trBlue.LargeChange = 17trBlue.SmallChange = 1trBlue.TickFrequency = 17trBlue.TickStyle = TickStyle.BottomRighttrBlue.Value = 0 '刚开始设置为0Init()Pencolor = Color.BlackEnd Sub
--------------------------------------------------------------------------------------------Private Sub mLine_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mLine.Clickf1 = 1End Sub
--------------------------------------------------------------------------------------------Private Sub mCircle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mCircle.Clickf1 = 2End Sub
--------------------------------------------------------------------------------------------Private Sub mRectangle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mRectangle.Clickf1 = 3End Sub
--------------------------------------------------------------------------------------------Private Sub mClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mClear.Clickf1 = 4P.Invalidate()Init()End Sub
--------------------------------------------------------------------------------------------Private Sub P_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles P.MouseDownSelect Case f1Case 1If e.Button = MouseButtons.Left ThenIf lf Thenlc(l) = Pencolorlp(l, ln(l)) = New Point(e.X, e.Y)lf = FalseElseIf Not lf Thenln(l) = ln(l) + 1End IfElseIf e.Button = MouseButtons.Right Thenlleft = FalseP.Invalidate()End IfCase 2If cf Thencc(c) = Pencolorcp1(c) = New Point(e.X, e.Y)cf = FalseElseIf Not cf Thencf = TrueP.Invalidate()End IfCase 3If rf Thenrc(r) = Pencolorrp1(r) = New Point(e.X, e.Y)rf = FalseElseIf Not rf Thenrf = TrueP.Invalidate()End IfEnd SelectEnd Sub
--------------------------------------------------------------------------------------------Private Sub P_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles P.MouseMoveSelect Case f1Case 1If lleft ThenIf Not lf Thenlp(l, ln(l) + 1) = New Point(e.X, e.Y)P.Invalidate()End IfEnd IfCase 2If Not cf Thencp2(c) = New Point(e.X, e.Y)P.Invalidate()End IfCase 3If Not rf Thenrp2(r) = New Point(e.X, e.Y)P.Invalidate()End IfEnd SelectEnd Sub
--------------------------------------------------------------------------------------------Private Sub P_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles P.PaintDim rect1 As RectangleDim rect2 As RectangleDim i, j As IntegerDim g As Graphics = e.Graphicsg.SmoothingMode = SmoothingMode.AntiAliasIf l > 0 ThenFor i = 0 To l - 1For j = 0 To ln(i) - 1g.DrawLine(Pens.White, lp(i, j), lp(i, j + 1))g.DrawLine(New Pen(lc(i), 3), lp(i, j), lp(i, j + 1))NextNextEnd IfIf c > 0 ThenFor i = 0 To c - 1rect1 = New Rectangle(cp1(i).X - cr(i), cp1(i).Y - cr(i), cr(i) * 2, cr(i) * 2)rect2 = New Rectangle(cp1(i).X - cr(i), cp1(i).Y - cr(i), cr(i) * 2, cr(i) * 2)g.DrawEllipse(Pens.White, rect1)g.DrawEllipse(New Pen(cc(i), 3), rect2)NextEnd IfIf r > 0 ThenFor i = 0 To r - 1rect1 = New Rectangle(Min(rp1(i).X, rp2(i).X), Min(rp1(i).Y, rp2(i).Y), Abs(rp1(i).X - rp2(i).X), Abs(rp1(i).Y - rp2(i).Y))rect2 = New Rectangle(Min(rp1(i).X, rp2(i).X), Min(rp1(i).Y, rp2(i).Y), Abs(rp1(i).X - rp2(i).X), Abs(rp1(i).Y - rp2(i).Y))g.DrawRectangle(Pens.White, rect1)g.DrawRectangle(New Pen(rc(i), 3), rect2)NextEnd IfSelect Case f1Case 1If ln(l) >= 1 ThenFor j = 0 To ln(l) - 1g.DrawLine(Pens.White, lp(i, j), lp(i, j + 1))g.DrawLine(New Pen(lc(l), 3), lp(i, j), lp(i, j + 1))NextEnd IfIf lleft ThenIf Not lf Theng.DrawLine(Pens.White, lp(l, ln(l)), lp(l, ln(l) + 1))g.DrawLine(New Pen(lc(l), 3), lp(l, ln(l)), lp(l, ln(l) + 1))End IfElseIf ln(l) > 0 Thenl = l + 1End Iflf = Truelleft = TrueEnd IfCase 2If Not cf Thencr(c) = Sqrt((cp2(c).X - cp1(c).X) * (cp2(c).X - cp1(c).X) + (cp2(c).Y - cp1(c).Y) * (cp2(c).Y - cp1(c).Y))rect1 = New Rectangle(cp1(c).X - cr(c), cp1(c).Y - cr(c), cr(c) * 2, cr(c) * 2)rect2 = New Rectangle(cp1(c).X - cr(c), cp1(c).Y - cr(c), cr(c) * 2, cr(c) * 2)g.DrawLine(Pens.White, cp1(c), cp2(c))g.DrawLine(New Pen(cc(c), 3), cp1(c), cp2(c))g.DrawLine(Pens.Black, cp1(c), cp2(c))g.DrawEllipse(Pens.White, rect1)g.DrawEllipse(New Pen(cc(c), 3), rect2)Elsecr(c) = Sqrt((cp2(c).X - cp1(c).X) * (cp2(c).X - cp1(c).X) + (cp2(c).Y - cp1(c).Y) * (cp2(c).Y - cp1(c).Y))rect1 = New Rectangle(cp1(c).X - cr(c), cp1(c).Y - cr(c), cr(c) * 2, cr(c) * 2)rect2 = New Rectangle(cp1(c).X - cr(c), cp1(c).Y - cr(c), cr(c) * 2, cr(c) * 2)g.DrawEllipse(Pens.White, rect1)g.DrawEllipse(New Pen(cc(c), 3), rect2)c = c + 1End IfCase 3If Not rf Theng.DrawLine(Pens.White, cp1(r), cp2(r))g.DrawLine(Pens.Black, cp1(r), cp2(r))rect1 = New Rectangle(Min(rp1(r).X, rp2(r).X), Min(rp1(r).Y, rp2(r).Y), Abs(rp1(r).X - rp2(r).X), Abs(rp1(r).Y - rp2(r).Y))rect2 = New Rectangle(Min(rp1(r).X, rp2(r).X), Min(rp1(r).Y, rp2(r).Y), Abs(rp1(r).X - rp2(r).X), Abs(rp1(r).Y - rp2(r).Y))g.DrawRectangle(Pens.White, rect1)g.DrawRectangle(New Pen(rc(r), 3), rect2)Elserect1 = New Rectangle(Min(rp1(r).X, rp2(r).X), Min(rp1(r).Y, rp2(r).Y), Abs(rp1(r).X - rp2(r).X), Abs(rp1(r).Y - rp2(r).Y))rect2 = New Rectangle(Min(rp1(r).X, rp2(r).X), Min(rp1(r).Y, rp2(r).Y), Abs(rp1(r).X - rp2(r).X), Abs(rp1(r).Y - rp2(r).Y))g.DrawRectangle(Pens.White, rect1)g.DrawRectangle(New Pen(rc(r), 3), rect2)r = r + 1End IfCase 4g.FillRectangle(Brushes.White, P.ClientRectangle)f1 = 0End Select
--------------------------------------------------------------------------------------------
Private Sub tr_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles trRed.Scroll, trGreen.Scroll, trBlue.ScrollPencolor = Color.FromArgb(trRed.Value, trGreen.Value, trBlue.Value)pColor.BackColor = PencolorEnd Sub
End Class

5 、程序运行

刘一哥GIS:专注测绘地理信息教育,探索地理奥秘,分享GIS价值!

【计算机图形学】实验:VB.net环境下的综合绘图与交互技术案例教程相关推荐

  1. 小学计算机教育实习教案,信息技术环境下小学综合实践活动课教学设计

    摘要: 综合实践活动课是为了让学生得到真正意义上的全面发展而设的.它在诸多方面为我国的小学教育开辟了崭新的天地.如今,人类已经进入信息时代.信息时代的综合实践活动要把信息技术有机地融入综合实践活动的内 ...

  2. 【计算机图形学】实验:C#.net环境下采用GDI+图形特技处理案例教程

    一.实验目的 掌握在.net环境下对图形特技的处理方法. 二.实验准备 学习在.net环境下读取图像文件.改变颜色等基本知识. 三.实验内容 在.net环境中实现对图像的灰度化处理.柔化和锐化.底片滤 ...

  3. 华北电力大学计算机图形学实验报告,华北电力大学计算机图形学实验报告分析.doc...

    华北电力大学计算机图形学实验报告分析 科 技 学 院 课程设计(综合实验)报告 ( 2013 -- 2014 年度第 2 学期) 实验名称 OpenGL基本图元绘制实验 课程名称 计算机图形学 | | ...

  4. 计算机图形学实验——二维卡通人物交互

    计算机图形学实验1.2卡通人物交互 OpenGL卡通人物交互 基础"图元"绘制 OpenGL拾取物体 反走样 略提反走样问题 OpenGL实现二维反走样 放缩.旋转和拖动 小结 O ...

  5. 计算机图形学直线线型实验报告,计算机图形学实验报告-直线中点bresenham算法的实现资料.doc...

    计算机图形学实验报告-直线中点bresenham算法的实现资料.doc (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 29.90 积分 计算机图形 ...

  6. 计算机图形学实验一 《MFC绘图基础》

    计算机图形学实验一 <MFC绘图基础> 视频讲解:无没啥讲的,有一些东西在实验二视频提了一下 一.MFC介绍 1.基本介绍: MFC是微软公司提供的一个类库,以C++类的形式封装了Wind ...

  7. 计算机图学实验报告,计算机图形学实验报告实验1

    计算机图形学实验报告实验1 (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 贵州大学实验报告学院:计算机科学与信息专业:计科班级:101 ...

  8. 计算机图形动画处理实训报告,西安石油大学计算机图形学 实验报告.doc

    文档介绍: 西安石油大学计算机图形学_实验报告实验报告 -计算机图形学实验大作业 课程名称计算机图形学 实验名称二维绘图系统与计算机动画 姓名 学号 专业班级 成绩 指导教师爨莹 实验报告 课程名称计 ...

  9. 深圳大学计算机图形学实验4.1,深圳大学计算机图形学大作业实验报告.doc

    深圳大学计算机图形学大作业实验报告 深 圳 大 学 实 验 报 告 实验课程名称: 计算机图形学 实验项目名称: 计算机期末综合大作业 学院: 计算机与软件 专业: 计算机科学与技术 报告人: 班级: ...

最新文章

  1. 如何找到文件的家-打开文件对话框openFileDialog
  2. 测试人员如何赢得开发人员的尊重
  3. linux tar打包压缩排除某个目录或文件
  4. UIImagePikerController 浅析
  5. 机器学习实战——特征工程之数据预处理
  6. java buffer 记事本_Java实现记事本|IO流/GUI
  7. 6.23 NIUDAY 深圳站 | 从新零售到金融,Follow 技术大咖一起探索人工智能应用的无限可能...
  8. 机器人抓取方式,值得研究。
  9. c语言管程例子,管程 - it610.com
  10. python路径怎么找windows_如何查看 windows 中 Python安装路径
  11. python进行数据查询_如何进行python数据库查询?(实例解析)
  12. 关于栈的链式存储结构
  13. XML入门的常见问题
  14. 黑马vue实战项目-(八)项目的上线
  15. Java数据结构——代码实现顺序表的操作
  16. 索尼z3c d5833港版救砖强刷说明
  17. 如何使用navicat premium打开外部.sql文件
  18. win10点击关机后不能正常关机的处理
  19. shell脚本实现网络连接的检测
  20. 21、关于破解点触的验证码

热门文章

  1. Visual Basic、C# 和 C++ 的数据类型比较(转)
  2. .NetCore中IdentityServer使用nginx-proxy的一次排错经历
  3. 使用 dotnet-monitor 在 Kubernetes 中收集 .NET metrics
  4. .NET 6新特性试用 | Nuget包验证
  5. 30分钟通过Kong实现.NET网关
  6. 最近看了两本低代码的书
  7. 为什么有些大公司的效率弱爆了?
  8. 你知道这个C#开发跨平台APP的样例介绍开源项目吗?
  9. 设计模式中的那些工厂
  10. 使用C#编写STM32对接物联网平台IoTSharp发送遥测数据