Рисование прямой линии, как в Paint - C#

Узнай цену своей работы

Формулировка задачи:

Доброго всем времени суток. Нужно в PictureBox нарисовать прямую линию. Рисовать надо как в Paint: зажал левую клавишу мыши, провел линию, отпустил. Но, надо еще чтобы координаты каждой точки этой линии сохранялись в массивы: координаты по Х в один, координаты по У в другой. У меня уже было куча идей, но все равно ничего не получалось. Линию рисует, а вот с координатами проблема. Тонкости расчета координат рассматривались здесь http://www.cyberforum.ru/mathematics/thread85655-page2.html . Но это в основном была теоретическая часть... Может у кого-то есть определенные идеи по разрешению данной проблемы? Буду очень благодарен всем, кто поможет.

Решение задачи: «Рисование прямой линии, как в Paint»

textual
Листинг программы
  1. using System;
  2. using System.Drawing;
  3. using System.Windows.Forms;
  4.  
  5. class Program
  6. {
  7.     public static void Main()
  8.     {
  9.         Application.Run(new Form1());
  10.     }
  11. }
  12.  
  13. class Form1 : Form
  14. {
  15.     Bitmap bmp;
  16.     Bitmap bmp2;
  17.     Point StartPoint;
  18.     Pen blackpen;
  19.     public Form1()
  20.     {
  21.         FormBorderStyle = FormBorderStyle.FixedDialog;
  22.         ClientSize = new Size(640, 480);
  23.         blackpen = new Pen(Color.Black, 1);
  24.         bmp = new Bitmap(640, 480);
  25.         bmp2 = new Bitmap(640, 480);
  26.         Graphics grph = Graphics.FromImage(bmp);
  27.         grph.Clear(Color.White);
  28.     }
  29.     protected override void OnPaint(PaintEventArgs e)
  30.     {
  31.         //base.OnPaint(e);
  32.         e.Graphics.DrawImage(bmp,0,0);
  33.     }
  34.     protected override void OnMouseDown(MouseEventArgs e)
  35.     {
  36.         //base.OnMouseDown(e);
  37.         if (e.Button == MouseButtons.Left)
  38.         StartPoint = e.Location;
  39.     }
  40.     protected override void OnMouseMove(MouseEventArgs e)
  41.     {
  42.         //base.OnMouseMove(e);
  43.         if (e.Button == MouseButtons.Left)
  44.         {
  45.             Graphics grph = CreateGraphics();
  46.             Graphics grph2 = Graphics.FromImage(bmp2);
  47.             grph2.DrawImage(bmp, 0, 0);
  48.             grph2.DrawLine(blackpen, StartPoint, e.Location);
  49.             grph.DrawImage(bmp2, 0, 0);
  50.             grph.Dispose();
  51.             grph2.Dispose();
  52.         }
  53.     }
  54.     protected override void OnMouseUp(MouseEventArgs e)
  55.     {
  56.         //base.OnMouseUp(e);
  57.         Graphics grph = Graphics.FromImage(bmp);
  58.         grph.DrawLine(blackpen, StartPoint, e.Location);
  59.         grph.Dispose();
  60.         Invalidate();
  61.     }
  62. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы