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#基础笔记(第十七天)的更多相关文章

  1. Java基础笔记(十七)——继承(续)final

    final  最终的 修饰类,此类不能被继承.final与访问修饰符public位置随意,在class前即可.public final class A{ } 修饰方法,此方法不能被子类重写,但可以被子 ...

  2. Java基础笔记 – Annotation注解的介绍和使用 自定义注解

    Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 |  被围观 25,969 views+ 1.Anno ...

  3. php代码审计基础笔记

    出处: 九零SEC连接:http://forum.90sec.org/forum.php?mod=viewthread&tid=8059 --------------------------- ...

  4. MYSQL基础笔记(六)- 数据类型一

    数据类型(列类型) 所谓数据烈性,就是对数据进行统一的分类.从系统角度出发时为了能够使用统一的方式进行管理,更好的利用有限的空间. SQL中讲数据类型分成三大类:1.数值类型,2.字符串类型和时间日期 ...

  5. MYSQL基础笔记(五)- 练习作业:站点统计练习

    作业:站点统计 1.将用户的访问信息记录到文件中,独占一行,记录IP地址 <?php //站点统计 header('Content-type:text/html;charset=utf-8'); ...

  6. MYSQL基础笔记(四)-数据基本操作

    数据操作 新增数据:两种方案. 1.方案一,给全表字段插入数据,不需要指定字段列表,要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致.凡是非数值数据,到需要使用引号(建议使用单引号)包裹. i ...

  7. MYSQL基础笔记(三)-表操作基础

    数据表的操作 表与字段是密不可分的. 新增数据表 Create table [if not exists] 表名( 字段名 数据类型, 字段名 数据类型, 字段n 数据类型 --最后一行不需要加逗号 ...

  8. MYSQL基础笔记(二)-SQL基本操作

    SQL基本操作 基本操作:CRUD,增删改查 将SQL的基本操作根据操作对象进行分类: 1.库操作 2.表操作 3.数据操作 库操作: 对数据库的增删改查 新增数据库: 基本语法: Create da ...

  9. MYSQL基础笔记(一)

    关系型数据库概念: 1.什么是关系型数据库? 关系型数据库:是一种建立在关系模型(数学模型)上的数据库 关系模型:一种所谓建立在关系上的模型. 关系模型包含三个方面: 1.数据结构:数据存储的问题,二 ...

随机推荐

  1. windows下使用 ApiGen 生成php项目的开发文档

    之前使用 PHPDocument 生成过开发文档,但是界面看着不爽,遂尝试了 ApiGen 生成,不得不说界面看着舒服多了,下面说说安装和使用的方法. ApiGen官网: http://www.api ...

  2. Timer控件的使用限制和注意事项

    Timer的Interval 属性当编写 Timer 组件时,需要考虑 Interval 属性的几点限制:1. 如果应用程序或另一个应用程序对系统需求很大(如长循环.大量的计算或驱动程序.网络或端口访 ...

  3. HTTP 返回码 400

    400(错误请求)服务器不理解请求的语法 404表示页面不存在 返回500表示内部服务出错, 返回301表示资源永久性跳转 HTTP 500 – 内部服务器错误 HTTP 500.100 – 内部服务 ...

  4. 【319】Python 通过 Twilio 发短信

    参考:python利用twilio模块给自己发短信 参考:使用python实现往手机发短信(基于twilio) 步骤如下: 登录 Twilio 网站注册,貌似需要***,包括用户名.密码.手机号.项目 ...

  5. Graphics.Blit

    [Graphics.Blit] 需求注意第4个参数,用4个参数pass用于指定使用哪一个pass.默认值为-1,即使用所有的pass. 参考:file:///C:/Program%20Files%20 ...

  6. git 命令使用常见问题

    查看远端地址 git remote –v 查看配置 git config --list git status git add . // 暂存所有的更改 git checkout . // 丢弃所有的更 ...

  7. xen虚拟机管理命令

    #xen虚拟机管理命令 xm list:所有已知的虚拟机列表 xm create:启动一个非托管的虚拟机 xm top:提供所有虚拟机的状态概貌 xm console:打开控制台管理虚拟机 xm ne ...

  8. php判断一个数组是另一个数组的子集

    需求最少的时间复杂度判断$a数组是否是$b数组的子集 // 快速的判断$a数组是否是$b数组的子集$a = array(135,138);$b = array(135,138,137); 实现方法 这 ...

  9. spark VS mapreduce

    Apache Spark,一个内存数据处理的框架,现在是一个顶级Apache项目. 这是Spark迈向稳定的重要一步,因为它越来越多地在下一代大数据应用中取代MapReduce. MapReduce是 ...

  10. HDU 6065 RXD, tree and sequence (LCA+DP)

    题意:给定上一棵树和一个排列,然后问你把这个排列分成m个连续的部分,每个部分的大小的是两两相邻的LCA的最小深度,问你最小是多少. 析:首先这个肯定是DP,然后每个部分其实就是里面最小的那个LCA的深 ...