热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

黑马之前,一个简单的winform程序

看了一个月(记不清了,可能更少可能更多,都在业余时间)的传智播客视频,刚好手头有一些比较花费时间的活儿,就一时兴起写了一个简单的winform应用程序。简化了对照书本一组组数值进行

看了一个月(记不清了,可能更少可能更多,都在业余时间)的传智播客视频,刚好手头有一些比较花费时间的活儿,就一时兴起写了一个简单的winform应用程序。简化了对照书本一组组数值进行判断质地类型的工作,写日志记录思想历程,也欢迎围观,嘿嘿
《黑马之前,一个简单的winform程序》

伏笔:
土壤学上的一个名词“土壤质地”

土壤质地是土壤物理性质之一。指土壤中不同大小直径的矿物颗粒的组合状况。土壤质地与土壤通气、保肥、保水状况及耕作的难易有密切关系;土壤质地状况是拟定土壤利用、管理和改良措施的重要依据。肥沃的土壤不仅要求耕层的质地良好,还要求有良好的质地剖面。虽然土壤质地主要决定于成土母质类型,有相对的稳定性,但耕作层的质地仍可通过耕作、施肥等活动进行调节。

简而言之:砂粒,粘粒,粉粒。具体的参数指标有兴趣的可以问度娘。

以前都是这样,检测出数据之后,参照现行标准“美国制质地分类三角表”然后你就去查吧,找到相应的类型,作为数据最终成果。效率比较低下,还容易出错。

如果只是做一篇论文的数据的话,查查工作量不算太大,但是如果给你上千组数值呢,你是不是要奔溃了呢,嘿嘿
《黑马之前,一个简单的winform程序》
我就拿到好几千个。

既然实验测得的数据都是存放在excel表格中的,而且相对来说数据的格式都比较规范,那么为什么不通过计算机来处理这个问题呢。

备注:首先我是在上网找资料,发下以前有一个农业科学的专家做过一个类似的东西,是用vba写的,不过他并没有把成果或者是源代码放在网上,有幸的是我找到了一篇他写的关于这个应用程序的论文(论文来源:中国知网)。《《《大喜,哈哈哈》》》在此还得感谢一下这个作者的论文解决了一些当时还没解决的棘手的问题。

其实之前的内容和代码几乎没有关系
《黑马之前,一个简单的winform程序》

《黑马之前,一个简单的winform程序》 

任务要求:
一个winform程序,可以完成两项功能

                             1、从excel导入数据,然后通过内部代码完成判断数据的类型,输出到文件

                             2、可以进行单组数据的判断,并将该组数据在三角网的位置进行显示

界面的设计如图

                              
《黑马之前,一个简单的winform程序》 

思路
:1、将这个三角网格在我设计的界面上通过代码来进行绘制。

               2、通过我从界面输入框得到的数据将这个点转化为坐标,在我刚才绘制的三角网格上覆盖一个小图形来表达它的位置。

               3、通过后台的代码将这一组数据所属的数据类型在设计的textbox里进行显示。

               4、完成上诉三个步骤之后再进行批量数据的处理功能,导入数据库,判断后再导出到文件。

               5、进行界面其他功能的完善。

过程:
1、
如何实时绘制这个三角网格呢,c#中有一个Graohics类,这个类有一个DrawPolygon的方法可以试一下,

《黑马之前,一个简单的winform程序》 

然后就是把那张图中的26个控制点转换为这个方法里边所需要的Points[] 数组,以左下角砂粒100粉粒0为坐标原点,根据它们所在的位置分别把它们的坐标表示出来,每一个多边形的端点作为一个点的数组进行存储。然后再vs里边添加画笔,等需要的工具进行多边形的绘制。在这里遇到了一个问题,当我把这段代码放在form_load事件中的时候,因为窗体重绘的问题我所绘制的三角形被覆盖了。这里是我遇到的第一个麻烦,大家有兴趣可以看这篇日记   
form_load
绘制的图形被覆盖

                  2、窗口是画好了,接下来该到我所输入的那个点了,怎么把我文本框里输入的那个点转换为我这个图形上能显示的图片呢。对这个三角形进行仔细观察发现,我所输入的三个数值,通过其中的两个就可以转换为我刚才设计的那个直角坐标里面去。
x=1000-砂粒-粘粒/2;    y=√3*粘粒*2;
啊哈,这样我就得到了我所需要的坐标了,然后通过
Graohics类的DrawPoint方法进行
绘制并填充成可见的图形
c#中绘制点线面

                 3、接下来是一个重头戏了,我要怎么进行质地的判断并输出呢,观察图形不难发现,除了左边的三个图形不能用三组数值进行确定之外,其他的都可以通过砂粒,粘粒,粉粒的三组数值进行归并,那么我就首先将我文本框里的数据在这9组数据里边进行判断是不是属于其中,这里不用熬诉,不容易的是左下角的三个区域。这里的内容还有一篇日记,有兴趣请移步————。判断质地类型其实就是
判断点是否在多边形内部
。我是用连接
http://bbs.itheima.com/thread-39465-1-1.html
里的方法实现的。这里同时也产生了一个问题,就是当点落在两个多边形的公共边界上的时候,咋办,其实简单再做一次点在线上的判断就好了。如果在它上面,在输出结果时,同时显示两个类型就OK。大家要是有更好的方法,请不吝赐教

                 4、上面这三个过程,已经基本上能实现将我绘制的图形进行显示,并且将我输入的数值进行判断了,在这里通过添加一个form_Sizechanged事件来进行窗口的大小缩放。这样我就面临了一个问题,怎么能使得这个图形的大小随着窗口的改变而改变呢。我必须将我刚才绘图用的控制点转换为可变的数值才行。用到了picbox的width属性,然后将控制点的坐标转换为用picbox。width的值进行表示。

                5.完成了这些工作之后,接下来就可以考虑一下批量数据处理了。既然要做批量数据,我就需要数据库、从excel读取数据的方法、将数据输出的方法这些内容。

                

其实现在的这些内容和代码也没什么关系
《黑马之前,一个简单的winform程序》
《黑马之前,一个简单的winform程序》

累了,歇会儿再继续(欢迎指正批评!)


推荐阅读
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • MATLAB函数重名问题解决方法及数据导入导出操作详解
    本文介绍了解决MATLAB函数重名的方法,并详细讲解了数据导入和导出的操作。包括使用菜单导入数据、在工作区直接新建变量、粘贴数据到.m文件或.txt文件并用load命令调用、使用save命令导出数据等方法。同时还介绍了使用dlmread函数调用数据的方法。通过本文的内容,读者可以更好地处理MATLAB中的函数重名问题,并掌握数据导入导出的各种操作。 ... [详细]
  • 我们有(据我所知)星型模式SQL数据库中的数据文件。该数据库有5个不同的文件,扩展名为 ... [详细]
author-avatar
mobiledu2402851377
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有