Form1.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. namespace WindowsFormsApp3
  11. {
  12. public partial class Form1 : Form
  13. {
  14. int a = 0;
  15. int i = 10;
  16. ЛяховEntities db = new ЛяховEntities();
  17. private string text = String.Empty;
  18. private Bitmap CreateImage(int Width, int Height)
  19. {
  20. Random rnd = new Random();
  21. //Создадим изображение
  22. Bitmap result = new Bitmap(Width, Height);
  23. //Вычислим позицию текста
  24. int Xpos = rnd.Next(0, Width - 50);
  25. int Ypos = rnd.Next(15, Height - 15);
  26. //Добавим различные цвета
  27. Brush[] colors = { Brushes.Black,
  28. Brushes.Red,
  29. Brushes.RoyalBlue,
  30. Brushes.Green };
  31. //Укажем где рисовать
  32. Graphics g = Graphics.FromImage((Image)result);
  33. //Пусть фон картинки будет серым
  34. g.Clear(Color.Gray);
  35. //Сгенерируем текст
  36. text = String.Empty;
  37. string ALF = "1234567890QWERTYUIOPASDFGHJKLZXCVBNM";
  38. for (int i = 0; i < 5; ++i)
  39. text += ALF[rnd.Next(ALF.Length)];
  40. //Нарисуем сгенирируемый текст
  41. g.DrawString(text,
  42. new Font("Arial", 15),
  43. colors[rnd.Next(colors.Length)],
  44. new PointF(Xpos, Ypos));
  45. //Добавим немного помех
  46. /////Линии из углов
  47. g.DrawLine(Pens.Black,
  48. new Point(0, 0),
  49. new Point(Width - 1, Height - 1));
  50. g.DrawLine(Pens.Black,
  51. new Point(0, Height - 1),
  52. new Point(Width - 1, 0));
  53. ////Белые точки
  54. for (int i = 0; i < Width; ++i)
  55. for (int j = 0; j < Height; ++j)
  56. if (rnd.Next() % 20 == 0)
  57. result.SetPixel(i, j, Color.White);
  58. return result;
  59. }
  60. public Form1()
  61. {
  62. InitializeComponent();
  63. }
  64. private void Form1_Load(object sender, EventArgs e)
  65. {
  66. pictureBox1.Image = this.CreateImage(pictureBox1.Width, pictureBox1.Height);
  67. }
  68. private void button1_Click(object sender, EventArgs e)
  69. {
  70. if (string.IsNullOrEmpty(textBox2.Text) || string.IsNullOrEmpty(textBox3.Text))
  71. {
  72. MessageBox.Show("Введите данные для входа");
  73. return;
  74. }
  75. var пользователь = db.Пользователи.AsNoTracking().FirstOrDefault(A => A.login == textBox2.Text && A.password == textBox3.Text);
  76. if (пользователь == null)
  77. MessageBox.Show("Ошибка авторизации");
  78. pictureBox1.Visible = true;
  79. pictureBox1.Image = this.CreateImage(pictureBox1.Width, pictureBox1.Height);
  80. button1.Visible = false;
  81. button2.Visible = true;
  82. textBox1.Visible = true;
  83. }
  84. private void button2_Click(object sender, EventArgs e)
  85. {
  86. if (textBox1.Text == this.text)
  87. {
  88. MessageBox.Show("Верно!");
  89. }
  90. else
  91. {
  92. MessageBox.Show("Ошибка!");
  93. a = a + 1;
  94. if (i == 10)
  95. {
  96. label3.Text = string.Format("Вы исчерпали лимит попыток, доступ к программе заблокирован на {0} секунд.", i);
  97. timer2.Tick += new EventHandler(timer2_Tick);
  98. timer2.Interval = 1000;
  99. timer2.Start();
  100. }
  101. else
  102. {
  103. return;
  104. }
  105. }
  106. }
  107. private void timer2_Tick(object sender, EventArgs e)
  108. {
  109. if (textBox1.Text == this.text)
  110. {
  111. MessageBox.Show("Верно!");
  112. }
  113. else
  114. {
  115. label3.Text = string.Format("Вы исчерпали лимит попыток, доступ к программе заблокирован на {0} секунд.", --i);
  116. }
  117. if (i == 0)
  118. {
  119. label3.Text = "";
  120. (sender as Timer).Stop();
  121. a = 0;
  122. i = 10;
  123. }
  124. }
  125. }
  126. }