• 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

  • 相关阅读:
    django之session配置
    django之基于cookie和装饰器实现用户认证
    django之分页插件
    python小程序之并发连接
    django之模版的自定义函数
    django之母版的继承
    jQuery 模态对话框示例
    python学习笔记10 ----网络编程
    python 学习笔记9(面向对象)
    python 学习笔记8 (模块)
  • 原文地址:https://www.cnblogs.com/VSMinos/p/7873464.html
Copyright © 2020-2023  润新知