Advertisement
Guest User

Untitled

a guest
Jan 25th, 2020
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 16.76 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Windows;
  7. using System.Windows.Controls;
  8. using System.Windows.Data;
  9. using System.Windows.Documents;
  10. using System.Windows.Input;
  11. using System.Windows.Media;
  12. using System.Windows.Media.Imaging;
  13. using System.Windows.Navigation;
  14. using System.Windows.Shapes;
  15.  
  16. namespace Paint
  17. {
  18.     /// <summary>
  19.     /// Логика взаимодействия для MainWindow.xaml
  20.     /// </summary>
  21.     public partial class MainWindow : Window
  22.     {
  23.         public MainWindow()
  24.         {
  25.             InitializeComponent();
  26.             line_color = new Color();
  27.             line_color.A = 255;
  28.             line_color.R = (byte)color_a.Value;
  29.             line_color.G = (byte)color_b.Value;
  30.             line_color.B = (byte)color_c.Value;
  31.             int line_size = (int)width_slider.Value;
  32.         }
  33.         int line_size;
  34.         bool is_drawing = false;
  35.         Point prev_mouse_position;
  36.         Color line_color;
  37.  
  38.         private void Canvas_MouseDown(object sender, MouseButtonEventArgs e)
  39.         {
  40.             is_drawing = true;
  41.             prev_mouse_position = e.GetPosition(this);
  42.         }
  43.  
  44.         private void Canvas_MouseUp(object sender, MouseButtonEventArgs e)
  45.         {
  46.             is_drawing = false;
  47.             if (circle_rb.IsChecked.Value)
  48.             {
  49.                 Ellipse ellipse = new Ellipse();
  50.  
  51.                 // Настройка границы
  52.                 ellipse.StrokeThickness = 1;
  53.                 ellipse.Stroke = new SolidColorBrush(line_color);
  54.  
  55.                 // Настройка заливки
  56.                 ellipse.Fill = new SolidColorBrush(line_color);
  57.  
  58.                 // Настройка ширины и высоты
  59.                 Point curr_mouse_position = e.GetPosition(this);
  60.                 if (prev_mouse_position.X > curr_mouse_position.X)
  61.                 {
  62.                     double kek;
  63.                     kek = curr_mouse_position.X;
  64.                     curr_mouse_position.X = prev_mouse_position.X;
  65.                     prev_mouse_position.X = kek;
  66.                 }
  67.                 if (prev_mouse_position.Y > curr_mouse_position.Y)
  68.                 {
  69.                     double kek;
  70.                     kek = curr_mouse_position.Y;
  71.                     curr_mouse_position.Y = prev_mouse_position.Y;
  72.                     prev_mouse_position.Y = kek;
  73.                 }
  74.                 ellipse.Width = Math.Abs(curr_mouse_position.X - prev_mouse_position.X);
  75.                 ellipse.Height = Math.Abs(curr_mouse_position.Y - prev_mouse_position.Y);
  76.  
  77.                 // Настройка положения
  78.                 Canvas.SetLeft(ellipse, prev_mouse_position.X -20);
  79.                 Canvas.SetTop(ellipse, prev_mouse_position.Y - 110);
  80.  
  81.                 // Добавление на Canvas с именем canvas
  82.                 canvas.Children.Add(ellipse);
  83.             } else if (reactangle_rb.IsChecked.Value)
  84.             {
  85.                 Rectangle rectangle = new Rectangle();
  86.  
  87.                 // Настройка границы
  88.                 rectangle.StrokeThickness = 1;
  89.                 rectangle.Stroke = new SolidColorBrush(line_color);
  90.  
  91.                 // Настройка заливки
  92.                 rectangle.Fill = new SolidColorBrush(line_color);
  93.  
  94.                 // Настройка ширины и высоты
  95.                 Point curr_mouse_position = e.GetPosition(this);
  96.                 if (prev_mouse_position.X > curr_mouse_position.X)
  97.                 {
  98.                     double kek;
  99.                     kek = curr_mouse_position.X;
  100.                     curr_mouse_position.X = prev_mouse_position.X;
  101.                     prev_mouse_position.X = kek;
  102.                 }
  103.                 if (prev_mouse_position.Y > curr_mouse_position.Y)
  104.                 {
  105.                     double kek;
  106.                     kek = curr_mouse_position.Y;
  107.                     curr_mouse_position.Y = prev_mouse_position.Y;
  108.                     prev_mouse_position.Y = kek;
  109.                 }
  110.                 rectangle.Width = Math.Abs(curr_mouse_position.X - prev_mouse_position.X);
  111.                 rectangle.Height = Math.Abs(curr_mouse_position.Y - prev_mouse_position.Y);
  112.  
  113.                 // Настройка положения
  114.                 Canvas.SetLeft(rectangle, prev_mouse_position.X - 20);
  115.                 Canvas.SetTop(rectangle, prev_mouse_position.Y - 110);
  116.  
  117.                 // Добавление на Canvas с именем canvas
  118.                 canvas.Children.Add(rectangle);
  119.             }
  120.         }
  121.  
  122.         private void Canvas_MouseMove(object sender, MouseEventArgs e)
  123.         {
  124.             if (is_drawing)
  125.             {
  126.                 if (pencil_rb.IsChecked.Value == true)
  127.                 {
  128.                     line_color.R = (byte)color_a.Value;
  129.                     line_color.G = (byte)color_b.Value;
  130.                     line_color.B = (byte)color_c.Value;
  131.  
  132.                     Ellipse ellipse = new Ellipse();                                // Создание переменной точки
  133.                     ellipse.StrokeThickness = 2;                                    // Установка толщины
  134.                     ellipse.Stroke = Brushes.CornflowerBlue;                        // Установка цвета из фиксированного набора
  135.                     Canvas.SetLeft(ellipse, e.GetPosition(this).X - 20 - 2 / 2);    // Установка координаты по X
  136.                     Canvas.SetTop(ellipse, e.GetPosition(this).Y - 110 - 2 / 2);    // Установка координаты по Y
  137.                     ellipse.Stroke = new SolidColorBrush(line_color);
  138.                     canvas.Children.Add(ellipse);                                   // Добавление точки на canvas
  139.  
  140.                     Point curr_mouse_position = e.GetPosition(this);
  141.                     Line line = new Line();                    // Создание переменной линии
  142.                     line.StrokeThickness = 2;                  // Установка толщины
  143.                     line.Stroke = Brushes.CornflowerBlue;      // Установка цвета из фиксированного набора
  144.                     line.X1 = prev_mouse_position.X - 20;      // Установка координат начальной и конечной точки
  145.                     line.Y1 = prev_mouse_position.Y - 110;
  146.                     line.X2 = curr_mouse_position.X - 20;
  147.                     line.Y2 = curr_mouse_position.Y - 110;
  148.                     line.Stroke = new SolidColorBrush(line_color);
  149.                     prev_mouse_position = curr_mouse_position; // Смещение координат
  150.                     canvas.Children.Add(line);
  151.                 }else if (brush_rb.IsChecked.Value)
  152.                 {
  153.                     line_color.R = (byte)color_a.Value;
  154.                     line_color.G = (byte)color_b.Value;
  155.                     line_color.B = (byte)color_c.Value;
  156.  
  157.                     Ellipse ellipse = new Ellipse();                                // Создание переменной точки
  158.                     ellipse.StrokeThickness = line_size;                                    // Установка толщины
  159.                     ellipse.Stroke = Brushes.CornflowerBlue;                        // Установка цвета из фиксированного набора
  160.                     Canvas.SetLeft(ellipse, e.GetPosition(this).X - 20 - line_size / 2);    // Установка координаты по X
  161.                     Canvas.SetTop(ellipse, e.GetPosition(this).Y - 110 - line_size / 2);    // Установка координаты по Y
  162.                     ellipse.Stroke = new SolidColorBrush(line_color);
  163.                     canvas.Children.Add(ellipse);                                   // Добавление точки на canvas
  164.  
  165.                     Point curr_mouse_position = e.GetPosition(this);
  166.                     Line line = new Line();                    // Создание переменной линии
  167.                     line.StrokeThickness = line_size;                  // Установка толщины
  168.                     line.Stroke = Brushes.CornflowerBlue;      // Установка цвета из фиксированного набора
  169.                     line.X1 = prev_mouse_position.X - 20;      // Установка координат начальной и конечной точки
  170.                     line.Y1 = prev_mouse_position.Y - 110;
  171.                     line.X2 = curr_mouse_position.X - 20;
  172.                     line.Y2 = curr_mouse_position.Y - 110;
  173.                     line.Stroke = new SolidColorBrush(line_color);
  174.                     prev_mouse_position = curr_mouse_position; // Смещение координат
  175.                     canvas.Children.Add(line);
  176.                 }else if (eraser_rb.IsChecked.Value)
  177.                 {
  178.                     line_color.R = 255;
  179.                     line_color.G = 255;
  180.                     line_color.B = 255;
  181.                     Ellipse ellipse = new Ellipse();                                // Создание переменной точки
  182.                     ellipse.StrokeThickness = line_size;                                    // Установка толщины
  183.                     ellipse.Stroke = Brushes.CornflowerBlue;                        // Установка цвета из фиксированного набора
  184.                     Canvas.SetLeft(ellipse, e.GetPosition(this).X - 20 - line_size / 2);    // Установка координаты по X
  185.                     Canvas.SetTop(ellipse, e.GetPosition(this).Y - 110 - line_size / 2);    // Установка координаты по Y
  186.                     ellipse.Stroke = new SolidColorBrush(line_color);
  187.                     canvas.Children.Add(ellipse);                                   // Добавление точки на canvas
  188.  
  189.                     Point curr_mouse_position = e.GetPosition(this);
  190.                     Line line = new Line();                    // Создание переменной линии
  191.                     line.StrokeThickness = line_size;                  // Установка толщины
  192.                     line.Stroke = Brushes.CornflowerBlue;      // Установка цвета из фиксированного набора
  193.                     line.X1 = prev_mouse_position.X - 20;      // Установка координат начальной и конечной точки
  194.                     line.Y1 = prev_mouse_position.Y - 110;
  195.                     line.X2 = curr_mouse_position.X - 20;
  196.                     line.Y2 = curr_mouse_position.Y - 110;
  197.                     line.Stroke = new SolidColorBrush(line_color);
  198.                     prev_mouse_position = curr_mouse_position; // Смещение координат
  199.                     canvas.Children.Add(line);
  200.                 }
  201.             }
  202.         }
  203.  
  204.         private void Width_slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
  205.         {
  206.             line_size = Convert.ToInt32(width_slider.Value);
  207.         }
  208.  
  209.         private void Color_a_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
  210.         {
  211.             line_color.R = (byte)color_a.Value;
  212.         }
  213.  
  214.         private void Color_b_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
  215.         {
  216.             line_color.B = (byte)color_b.Value;
  217.         }
  218.  
  219.         private void Color_c_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
  220.         {
  221.             line_color.G = (byte)color_c.Value;
  222.         }
  223.  
  224.         private void Button_Click(object sender, RoutedEventArgs e)
  225.         {
  226.             canvas.Children.Clear();
  227.         }
  228.  
  229.         private void Pencil_rb_Checked(object sender, RoutedEventArgs e)
  230.         {
  231.             if (width_set_tb.Visibility == Visibility.Visible)
  232.             {
  233.                 width_set_tb.Visibility = Visibility.Hidden;
  234.             }
  235.             if (width_slider.Visibility == Visibility.Visible)
  236.             {
  237.                 width_slider.Visibility = Visibility.Hidden;
  238.             }
  239.             if (color_tb.Visibility == Visibility.Visible)
  240.             {
  241.                 color_tb.Visibility = Visibility.Hidden;
  242.             }
  243.             if (color_a.Visibility == Visibility.Visible)
  244.             {
  245.                 color_a.Visibility = Visibility.Hidden;
  246.             }
  247.             if (color_b.Visibility == Visibility.Visible)
  248.             {
  249.                 color_b.Visibility = Visibility.Hidden;
  250.             }
  251.             if (color_c.Visibility == Visibility.Visible)
  252.             {
  253.                 color_c.Visibility = Visibility.Hidden;
  254.             }
  255.  
  256.         }
  257.  
  258.         private void Brush_rb_Checked(object sender, RoutedEventArgs e)
  259.         {
  260.             if (width_set_tb.Visibility == Visibility.Hidden)
  261.             {
  262.                 width_set_tb.Visibility = Visibility.Visible;
  263.             }
  264.             if (width_slider.Visibility == Visibility.Hidden)
  265.             {
  266.                 width_slider.Visibility = Visibility.Visible;
  267.             }
  268.             if (color_tb.Visibility == Visibility.Hidden)
  269.             {
  270.                 color_tb.Visibility = Visibility.Visible;
  271.             }
  272.             if (color_a.Visibility == Visibility.Hidden)
  273.             {
  274.                 color_a.Visibility = Visibility.Visible;
  275.             }
  276.             if (color_b.Visibility == Visibility.Hidden)
  277.             {
  278.                 color_b.Visibility = Visibility.Visible;
  279.             }
  280.             if (color_c.Visibility == Visibility.Hidden)
  281.             {
  282.                 color_c.Visibility = Visibility.Visible;
  283.             }
  284.         }
  285.  
  286.         private void Eraser_rb_Checked(object sender, RoutedEventArgs e)
  287.         {
  288.             if (width_set_tb.Visibility == Visibility.Hidden)
  289.             {
  290.                 width_set_tb.Visibility = Visibility.Visible;
  291.             }
  292.             if (width_slider.Visibility == Visibility.Hidden)
  293.             {
  294.                 width_slider.Visibility = Visibility.Visible;
  295.             }
  296.             if (color_tb.Visibility == Visibility.Visible)
  297.             {
  298.                 color_tb.Visibility = Visibility.Hidden;
  299.             }
  300.             if (color_a.Visibility == Visibility.Visible)
  301.             {
  302.                 color_a.Visibility = Visibility.Hidden;
  303.             }
  304.             if (color_b.Visibility == Visibility.Visible)
  305.             {
  306.                 color_b.Visibility = Visibility.Hidden;
  307.             }
  308.             if (color_c.Visibility == Visibility.Visible)
  309.             {
  310.                 color_c.Visibility = Visibility.Hidden;
  311.             }
  312.         }
  313.  
  314.         private void Reactangle_rb_Checked(object sender, RoutedEventArgs e)
  315.         {
  316.             if (width_set_tb.Visibility == Visibility.Visible)
  317.             {
  318.                 width_set_tb.Visibility = Visibility.Hidden;
  319.             }
  320.             if (width_slider.Visibility == Visibility.Visible)
  321.             {
  322.                 width_slider.Visibility = Visibility.Hidden;
  323.             }
  324.             if (color_tb.Visibility == Visibility.Hidden)
  325.             {
  326.                 color_tb.Visibility = Visibility.Visible;
  327.             }
  328.             if (color_a.Visibility == Visibility.Hidden)
  329.             {
  330.                 color_a.Visibility = Visibility.Visible;
  331.             }
  332.             if (color_b.Visibility == Visibility.Hidden)
  333.             {
  334.                 color_b.Visibility = Visibility.Visible;
  335.             }
  336.             if (color_c.Visibility == Visibility.Hidden)
  337.             {
  338.                 color_c.Visibility = Visibility.Visible;
  339.             }
  340.         }
  341.  
  342.         private void Circle_rb_Checked(object sender, RoutedEventArgs e)
  343.         {
  344.             if (width_set_tb.Visibility == Visibility.Visible)
  345.             {
  346.                 width_set_tb.Visibility = Visibility.Hidden;
  347.             }
  348.             if (width_slider.Visibility == Visibility.Visible)
  349.             {
  350.                 width_slider.Visibility = Visibility.Hidden;
  351.             }
  352.             if (color_tb.Visibility == Visibility.Hidden)
  353.             {
  354.                 color_tb.Visibility = Visibility.Visible;
  355.             }
  356.             if (color_a.Visibility == Visibility.Hidden)
  357.             {
  358.                 color_a.Visibility = Visibility.Visible;
  359.             }
  360.             if (color_b.Visibility == Visibility.Hidden)
  361.             {
  362.                 color_b.Visibility = Visibility.Visible;
  363.             }
  364.             if (color_c.Visibility == Visibility.Hidden)
  365.             {
  366.                 color_c.Visibility = Visibility.Visible;
  367.             }
  368.         }
  369.     }
  370. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement