一、实验目的

  1. 掌握运算符重载。
  2. 掌握索引符的编写。
  3. 掌握常用非泛型集合类和集合类的使用;
  4. 掌握可空类型的使用

二、实验内容

  1. 改进“画树”的例子程序,画出不同风格的“树”来。

原先的例子中,两棵子树的生长点都在(x1,y1),我们改进一下,将两棵子树的生长点不同,在(x1,y1)及(x2,y2)。

程序中可以加上一些控件(如滚动条、文本框等),以方便用户修改角度(例子中是35及30度)、长度(例子中是per1,per2),这里又加了两子树的位置的系数(即点0至点2的长度是点0至点1的长度的多少倍k)。

(例子中,x1=x0+leng*cos(th), 这里要加个x2=x0+leng*k*cos(th) )。

还可以加上颜色、粗细、是否随机等选项,全在于发挥你的想像力!

源代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace Homework18
{public partial class Form1 : Form{public Form1(){InitializeComponent();this.AutoScaleBaseSize = new Size(6, 14);this.ClientSize = new Size(500, 400);//窗体大小this.Paint += new PaintEventHandler(this.Form1_Paint);this.Click += new EventHandler(this.Redraw);//重画}private void Form1_Paint(object sender, PaintEventArgs e){graphics = e.Graphics;drawTree(10, 250, 350, 100, -PI / 2);drawTree(10, 150, 350, 100, -PI / 2);}private void Redraw(object sender, EventArgs e){ this.Invalidate(); }//鼠标点击,重新画private Graphics graphics;const double PI = Math.PI;double th1 = 40 * Math.PI / 180;double th2 = 30 * Math.PI / 180;double per1 = 0.6;double per2 = 0.7;Random rnd = new Random();double rand(){ return rnd.NextDouble();}void drawTree(int n, double x0, double y0, double leng, double th){if (n == 0) return;double x1 = x0 + leng * Math.Cos(th);double y1 = y0 + leng * Math.Sin(th);drawLine(x0, y0, x1, y1, n / 3);drawTree(n - 1, x1, y1, per1 * leng * (0.5 + rand()), th + th1 * (0.5 + rand()));drawTree(n - 1, x1, y1, per2 * leng * (0.4 + rand()), th - th2 * (0.5 + rand()));//递归调用if (rand() > 0.6)drawTree(n - 1, x1, y1, per2 * leng * (0.4 + rand()), th - th2 * (0.5 + rand()));//画出第三个分支}void drawLine(double x0, double y0, double x1, double y1, double width){if ((int)width * 3 <= 1)graphics.DrawLine(new Pen(Color.Red, (int)width), (int)x0, (int)y0, (int)x1, (int)y1);elsegraphics.DrawLine(new Pen(Color.Green, (int)width), (int)x0, (int)y0, (int)x1, (int)y1);}}
}

运行结果

三、实验心得与体会

  1. 掌握运算符重载。
  2. 掌握索引符的编写。
  3. 掌握常用非泛型集合类和集合类的使用;
  4. 掌握可空类型的使用

参考文章

https://blog.csdn.net/zhonghuachun/article/details/75040598

C#——《C#语言程序设计》实验报告——泛型与集合——“画树”程序相关推荐

  1. c语言程序设计实验报告2,C语言程序设计实验报告2.docx

    C语言程序设计实验报告2.docx 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该 ...

  2. c 语言差错编码实验结果,C语言程序设计实验报告(四).doc11111111111111111.doc

    C语言程序设计实验报告(四).doc11111111111111111 C语言程序设计实验报告 姓 名吴文重学 号52系 别数学系班级2班主讲教师徐时芳指导教师徐时芳实验日期2011-11-8专业10 ...

  3. c语言选择循环实验报告,C语言程序设计实验报告选择与循环结构程序设计.doc

    C语言程序设计实验报告选择与循环结构程序设计.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的 ...

  4. c语言的简单程序设计实验报告,工程学院C语言程序设计实验报告

    <工程学院C语言程序设计实验报告>由会员分享,可在线阅读,更多相关<工程学院C语言程序设计实验报告(5页珍藏版)>请在人人文库网上搜索. 1.南京工程学院实验报告课程名称C 语 ...

  5. c语言程序设计植树,C语言程序设计实验报告——实验

    C语言程序设计实验报告--实验 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档 ...

  6. c语言程序设计数组实验报告,(C语言程序设计实验报告数组.doc

    (C语言程序设计实验报告数组 <C语言程序设计 >课程实验报告 实验名称 学 号_ 姓 名 ___ 班 别 实验日期: 年月日 实验报告日期: 年月日 指导老师: 实验地点: 成 绩: 评 ...

  7. c语言程序设计数组实验报告,c语言程序设计实验报告(数组).doc

    c语言程序设计实验报告(数组).doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3 ...

  8. c语言指针部分上机,北科大C语言程序设计实验报告8-指针-练习题代码(2次上机课内容)--...

    北科大C语言程序设计实验报告8-指针-练习题代码(2次上机课内容)-- 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文 ...

  9. c语言程序设计的实验报告,C语言程序设计实验报告

    以下为<C语言程序设计实验报告>的无排版文字预览,完整格式请下载 下载前请仔细阅读文字预览以及下方图片预览.图片预览是什么样的,下载的文档就是什么样的. 湖南科技大学 2019-2020第 ...

最新文章

  1. LINUX samba的安装使用
  2. nginx日志分析查询异常请求IP之狙击网络黑客
  3. Fiori extension hook和Hybris的template
  4. Android开发之HttpClient网络请求以Json方式提交Post请求代码
  5. 读取linux的运行状态,Linux下安装使用sar工具来获取系统运行状态
  6. python中lines是什么类型_Python中splitlines()方法的使用简介
  7. Windows Phone开发(40):漫谈关键帧动画之中篇 转:http://blog.csdn.net/tcjiaan/article/details/7559978...
  8. C# WPF ListView Bindding 图片
  9. 中英文论文写作指导第三部分(实验、材料和方法部分)
  10. 【转】《Unity Shader入门精要》冯乐乐著 书中彩图
  11. java 排秩,lamd(java lambda表达式)
  12. Rational Rose工具栏中没有参与者工具(小人图标)的解决方法
  13. 苹果手机换电池对手机有影响吗_苹果手机换电池去哪里换?这样操作既省钱又省力...
  14. 如何使用传统图像处理方法进行大米的计数和长轴方向标记
  15. 梦幻新开服务器维护,《梦幻西游2》6月新开服务器公告
  16. python爬取微博数据词云_爬虫篇:使用Python动态爬取某大V微博,再用词云分析...
  17. Windows CreateFont:创建自己的字体
  18. 《gitlab从零到壹》出现问题:代码合并,源分支会被删除解决方案
  19. 冠状病毒的治疗方案汇总
  20. 金蝶eas系统服务器怎么启动,EAS应用服务器启动失败

热门文章

  1. FMS3系列(二):创建可交互的FMS连接--I can say:Hello World
  2. android studio failed to open zip file,Android Studio出现Failed to open zip file问题的解决方法...
  3. c++2个三维向量求角度差_交叉学科入门指南(2)——线性回归
  4. linux空指针异常能捕获到吗,一次kernel panic分析--空指针in handle_IRQ_event
  5. 无线路由器dns服务器不能用,DNS服务器不可用
  6. python格式化代码工具_python 代码格式化工具:YAPF
  7. dc综合与pt静态时序分析(中文)_小三电系统(PDU+DC+OBC)的技术研究
  8. Vue 学习 之 7.01 学习笔记
  9. 博后招募 | 澳大利亚悉尼大学徐畅老师招收深度学习方向博士后/全奖博士
  10. 采样算法哪家强?一个针对主流采样算法的比较