MainWindowViewModel.cs 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using Avalonia;
  2. using Avalonia.Controls;
  3. using Avalonia.Controls.Shapes;
  4. using Avalonia.Media;
  5. using AvaloniaApplicationTest.Models;
  6. using ReactiveUI;
  7. using System;
  8. using System.Collections.Generic;
  9. namespace AvaloniaApplicationTest.ViewModels
  10. {
  11. public class MainWindowViewModel : ViewModelBase
  12. {
  13. #region Простейшая реализация паттерна
  14. // свойство для отображения значения числового поля и изменения его при увеличении значения числового поля:
  15. public int Count {
  16. get => ModelClass.count;
  17. set => this.RaiseAndSetIfChanged(ref ModelClass.count, value);
  18. }
  19. // свойство для отображения фамилий в раскрывающемся списке
  20. public List<string> Surname => ModelClass.SurnameList;
  21. string message = ""; // начальное значение поля, в которое выводится сообщение
  22. // свойство, которое считывает значение из текстового поля и выводит его на экран
  23. public string Message
  24. {
  25. get => message;
  26. set => this.RaiseAndSetIfChanged(ref message, value);
  27. }
  28. public void AddCount() // метод, который увеличивает числовое значение
  29. {
  30. Count++;
  31. }
  32. #endregion
  33. #region Основа капчи
  34. Canvas can; // изначально контейнер Canvas пустой
  35. // свойтсво, которое отображает созданный контейнер Canvas в UserControl
  36. public Canvas Can
  37. {
  38. get => can;
  39. set => this.RaiseAndSetIfChanged(ref can, value);
  40. }
  41. public void CreateCaptcha() // метод для создания Canvas, внутри которого рандомно генерируются линии
  42. {
  43. SolidColorBrush color = new SolidColorBrush(Color.FromRgb(155, 155, 155));
  44. Canvas canvas = new Canvas()
  45. {
  46. Width = 400,
  47. Height = 400,
  48. Background = color,
  49. };
  50. Random rnd = new Random();
  51. TextBlock text = new TextBlock()
  52. {
  53. Text = "1",
  54. FontSize = 36,
  55. Foreground = Brushes.Blue,
  56. Padding = new Thickness(100)
  57. };
  58. canvas.Children.Add(text);
  59. for (int i = 0; i<=10;i++)
  60. {
  61. Line line = new Line()
  62. {
  63. StartPoint = new Point(rnd.Next(400), rnd.Next(400)),
  64. EndPoint = new Point(rnd.Next(400), rnd.Next(400)),
  65. Stroke = Brushes.Red,
  66. StrokeThickness = 5
  67. };
  68. canvas.Children.Add(line);
  69. }
  70. Can = canvas;
  71. }
  72. #endregion
  73. }
  74. }