C#基础笔记(第十七天)
1.复习
  ref  传地址 用的是同一块内存 一个改变另一个也随着改变     
  return n1 > n2 ? n1 : n2;  三元表达式     
  int max=GetMax(1,2,3,4,5,6,);
  public static int GetMax(params int []nums)   把数组类型的元素都当做数组的元素
  可变参数必须是放在最后一个
  算1-100的整数,奇数,偶数  根据i=1或i=2,i+=2
  int sum = 0;
  for (int i = 2; i < 101; i+=2)
  {
     sum += i;
   }
  输出数值保留2位
  int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9,10,213 };
  double avg= GetAvg(nums);
  avg= Convert.ToDouble(avg.ToString("0.00"));
  Console.WriteLine("{0:0.00}",avg);
  升序for循环嵌套
  int[] nums = { 1, 45, 13, 86, 12, 425, 3, 14, 545, };
  for (int i = 0; i < nums.Length-1; i++)
  {
   for (int j = 0; j < nums.Length-1-i; j++)
   {
    if(nums[j]>nums[j+1])
    {
     int temp = nums[j];
     nums[j] = nums[j + 1];
     nums[j + 1] = temp;
    }
    }
   }
   升序的方法
   Array.Sort(nums);
   反转的方法
   Array.Reverse(nums);
IndexOf();
   string str = "患者:........"
   Console.WriteLine("第1次出现咳嗽的位置是{0}",index);
   int i = 1;
   while (index != -1)
   {
   i++;
   index = str.IndexOf("咳嗽", index + 1);
   if(index==-1)
   {
    break;
   }
    Console.WriteLine("第{0}次出现咳嗽的位置是{1}", i,index);
    }
    Console.ReadKey();
string str = "  hello    world   , 你   好 世界 !";
   去掉字符串两端的空格
   str= str.Trim();
   将字节按照“ ”分成一个string类型的数组
   string []sNew= str.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries);
   把string类型数组用字符串连接成一个string字符串
   str= string.Join(" ", sNew);
   Console.WriteLine(str);
   Console.ReadKey();
2.GDI+
  一种绘图装置接口,可以将应用程序和绘图硬件分隔,让我们能够编写与装置无关的应用程序。
  单独的技术,可以和.NET进行更好的融合
  //创建GDI对象
  Graphics g = new Graphics(); 报虚线,不让我们定义,因为这个类没有定义构造函数
  创建对象的三步   在堆中开空间  在开辟的空间创建对象  调用构造函数 
  不让创建就这样创建  使用this  代表当前窗体对象  this.creategraphics
   通过this当前窗体创建对象 Graphics g = this.CreateGraphics();
   创建一个笔  
   Pen pen = new Pen();里面放一个颜色  brushes复数
//创建GDI对象
   Graphics g = this.CreateGraphics();
   //创建画笔对象
   Pen pen = new Pen(Brushes.Yellow);
   //创建两个点
   Point p1 = new Point(30, 50);
   Point p2 = new Point(250,250);
   //调用画直线的方法
   g.DrawLine(pen, p1, p2);
不停的擦不停的画,有残影是因为擦的速度赶不上移动的速度
   重绘窗体用form1的paint
画矩形
   Graphics g = this.CreateGraphics();
   Pen pen = new Pen(Brushes.Red);
   Rectangle rec = new Rectangle(new Point(50, 50),new Size(80,80));
   g.DrawRectangle(pen, rec);
绘制文本
   Graphics g = this.CreateGraphics();
   Pen pen = new Pen(Brushes.Brown);
   g.DrawString("小李子是个坑货", new Font("宋体", 20, FontStyle.Underline), Brushes.Black, new Point(300, 300));
3.画验证码
            Random r = new Random();
            string str = null;
            for (int i = 0; i < 5; i++)
            {
                int rNumber = r.Next(0, 10);
                str += rNumber;
            }
            //MessageBox.Show(str);
            Bitmap bmp = new Bitmap(150, 40);
            Graphics g = Graphics.FromImage(bmp);
for (int i = 0; i < 5; i++)
            {
                Point p = new Point(i * 20, 0);
                string[] fonts = { "微软雅黑", "宋体", "黑体", "隶书", "仿宋" };
                Color[] colors = {Color.Blue,Color.Yellow,Color.Black,Color.Red,Color.Green };
                g.DrawString(str[i].ToString(), new Font(fonts[r.Next(0, 5)], 20, FontStyle.Bold), new SolidBrush(colors[r.Next(0, 5)]), p);
            }
            for (int i = 0; i < 20; i++)
            {
                Point p1 = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
                Point p2 = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
                g.DrawLine(new Pen(Brushes.Green), p1, p2);
            }
            for (int i = 0; i < 500; i++)
            {
                Point p = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
                bmp.SetPixel(p.X,p.Y,Color.Black);
            }
//将图片镶嵌到pictureBox中
            pictureBox1.Image = bmp;
  步骤
  1、第一步创建随机数对象,通过一个一个循环往图片里面画随机数
  2、画的时候要注意,第一个数字和第二个数字要有一个间隔
  3、画字符串要指定它的字体,字体从给定的字体随机一下,颜色也在指定的颜色中随机。
  4、画一些线来掩饰一下,但是线不能超出图片的范围。
  5、最后把它镶嵌在pictureBox上
流程
  1、创建一个随机数对象r
  2、创建一个string类型的str为null
  3、用for循环来创建出随机数,5位数。值为0--9,使用tostring转为string类型,相加赋值给str
  4、创建Bitmap对象bmp位图。长宽为150,40
  5、创建GDI绘图对象 并把bmp放入
     Graphics g = Graphics.FromImage(bmp);
  6、用for循环来创建字的间距,字体,大小,颜色
     间距长为20像素,才不会重叠,由i来*,高随意,为0
     Point p = new Point(i * 20, 0);
     把字体存在string类型的数组fonts里,把颜色存在color类型的color里
     string[] fonts = { "微软雅黑", "宋体", "黑体", "隶书", "仿宋" };
     Color[] color = { Color.Blue, Color.Yellow, Color.Black, Color.Red, Color.Green };
     使用绘制字符串的方法  g.DrawString()
     内部载入
     每一个字,因为是char类型所以还需要转string类型
     str[i].ToString()
     字类型,类型随机选一,像素大小20,粗体
     new Font(fonts[r.Next(0,5)],20,FontStyle.Bold)
     无法使用brushes,需要用solidBrush,颜色随机选一
     new SolidBrush(colors[r.Next(0,5)])
     最后放p,表示每个字间隔后的位置
  7、用for循环来创建绿色的边线20条,让文字不要那么清晰
     创建两个point点,位置在bmp的范围内
     Point p1 = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
     Point p2 = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
     调用方法画线,颜色,点的p1和p2
     g.DrawLine(new Pen(Color.Green), p1, p2);
  8、用for循环来创建黑点500个
     设定point的x和y的范围
     Point p = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
     像素点的x和y轴,还有颜色 
     bmp.SetPixel(p.X, p.Y, Color.Black);
  9、把bmp嵌套在picturebox里面
     pictureBox1.Image = bmp
C#基础笔记(第十七天)的更多相关文章
- Java基础笔记(十七)——继承(续)final
		final 最终的 修饰类,此类不能被继承.final与访问修饰符public位置随意,在class前即可.public final class A{ } 修饰方法,此方法不能被子类重写,但可以被子 ... 
- Java基础笔记 – Annotation注解的介绍和使用 自定义注解
		Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 | 被围观 25,969 views+ 1.Anno ... 
- php代码审计基础笔记
		出处: 九零SEC连接:http://forum.90sec.org/forum.php?mod=viewthread&tid=8059 --------------------------- ... 
- MYSQL基础笔记(六)-  数据类型一
		数据类型(列类型) 所谓数据烈性,就是对数据进行统一的分类.从系统角度出发时为了能够使用统一的方式进行管理,更好的利用有限的空间. SQL中讲数据类型分成三大类:1.数值类型,2.字符串类型和时间日期 ... 
- MYSQL基础笔记(五)- 练习作业:站点统计练习
		作业:站点统计 1.将用户的访问信息记录到文件中,独占一行,记录IP地址 <?php //站点统计 header('Content-type:text/html;charset=utf-8'); ... 
- MYSQL基础笔记(四)-数据基本操作
		数据操作 新增数据:两种方案. 1.方案一,给全表字段插入数据,不需要指定字段列表,要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致.凡是非数值数据,到需要使用引号(建议使用单引号)包裹. i ... 
- MYSQL基础笔记(三)-表操作基础
		数据表的操作 表与字段是密不可分的. 新增数据表 Create table [if not exists] 表名( 字段名 数据类型, 字段名 数据类型, 字段n 数据类型 --最后一行不需要加逗号 ... 
- MYSQL基础笔记(二)-SQL基本操作
		SQL基本操作 基本操作:CRUD,增删改查 将SQL的基本操作根据操作对象进行分类: 1.库操作 2.表操作 3.数据操作 库操作: 对数据库的增删改查 新增数据库: 基本语法: Create da ... 
- MYSQL基础笔记(一)
		关系型数据库概念: 1.什么是关系型数据库? 关系型数据库:是一种建立在关系模型(数学模型)上的数据库 关系模型:一种所谓建立在关系上的模型. 关系模型包含三个方面: 1.数据结构:数据存储的问题,二 ... 
随机推荐
- SSH 自动化安装部署遇到的问题
			1. 对于需要添加unknown host的问题可以通过添加: -o StrictHostKeyChecking=no 例如: ssh -o StrictHostKeyChecking=no acco ... 
- Spring-Boot devtools项目自动重启
			配置#use shutdown curl -X POST -i 'http://127.0.0.1:8080/actuator/shutdown'management.endpoints.web.ex ... 
- MS SQL 2000 分配权限
			/** 分配权限 **/ use [master]create login [ln-tf\liaobin] from windows;gogrant control server to [ln-tf\ ... 
- 综合:bool类型 命名空间 输入输出
			----------siwuxie095 题目要求: 使用一个函数找出一个整型数组中的最大值或最小值 注意: 1.直接书写 cin cout endl, ... 
- linux 安装php7  Nginx
			这里 记录下 本屌安装linux 下安装php7 即遇到的问题. wget http://cn2.php.NET/distributions/php-7.0.4.tar.gz tar zxvf ph ... 
- 33-wxpython多个frame之间的信息共享
			https://blog.csdn.net/xyisv/article/details/78576932 https://blog.csdn.net/tianmaxingkong_/article/d ... 
- 基于 EntityFramework 的数据库主从读写分离服务插件
			基于 EntityFramework 的数据库主从读写分离服务插件 1. 版本信息和源码 1.1 版本信息 v1.01 beta(2015-04-07),基于 EF 6.1 开发,支持 EF 6.1 ... 
- day25 map,filter,reduce 内置函数,作业
			=====================作业一#用map来处理字符串列表啊,把列表中所有人都变成sb,比方alex_sbname=['alex','wupeiqi','yuanhao']###### ... 
- UVa 1151 Buy or Build (最小生成树+二进制法暴力求解)
			题意:给定n个点,你的任务是让它们都连通.你可以新建一些边,费用等于两点距离的平方(当然越小越好),另外还有几种“套餐”,可以购买,你购买的话,那么有些边就可以连接起来, 每个“套餐”,也是要花费的, ... 
- Hadoop学习【一】单机版搭建
			首先要说一下,Hadoop 2.x版本以后的改动,在这里帖一篇文章,觉得写的不错. http://www.ibm.com/developerworks/cn/opensource/os-cn-hado ... 
