Рисование прямой линии, как в Paint - C#
Формулировка задачи:
Доброго всем времени суток.
Нужно в PictureBox нарисовать прямую линию. Рисовать надо как в Paint: зажал левую клавишу мыши, провел линию, отпустил. Но, надо еще чтобы координаты каждой точки этой линии сохранялись в массивы: координаты по Х в один, координаты по У в другой. У меня уже было куча идей, но все равно ничего не получалось. Линию рисует, а вот с координатами проблема.
Тонкости расчета координат рассматривались здесь http://www.cyberforum.ru/mathematics/thread85655-page2.html . Но это в основном была теоретическая часть... Может у кого-то есть определенные идеи по разрешению данной проблемы?
Буду очень благодарен всем, кто поможет.
Решение задачи: «Рисование прямой линии, как в Paint»
textual
Листинг программы
- using System;
- using System.Drawing;
- using System.Windows.Forms;
- class Program
- {
- public static void Main()
- {
- Application.Run(new Form1());
- }
- }
- class Form1 : Form
- {
- Bitmap bmp;
- Bitmap bmp2;
- Point StartPoint;
- Pen blackpen;
- public Form1()
- {
- FormBorderStyle = FormBorderStyle.FixedDialog;
- ClientSize = new Size(640, 480);
- blackpen = new Pen(Color.Black, 1);
- bmp = new Bitmap(640, 480);
- bmp2 = new Bitmap(640, 480);
- Graphics grph = Graphics.FromImage(bmp);
- grph.Clear(Color.White);
- }
- protected override void OnPaint(PaintEventArgs e)
- {
- //base.OnPaint(e);
- e.Graphics.DrawImage(bmp,0,0);
- }
- protected override void OnMouseDown(MouseEventArgs e)
- {
- //base.OnMouseDown(e);
- if (e.Button == MouseButtons.Left)
- StartPoint = e.Location;
- }
- protected override void OnMouseMove(MouseEventArgs e)
- {
- //base.OnMouseMove(e);
- if (e.Button == MouseButtons.Left)
- {
- Graphics grph = CreateGraphics();
- Graphics grph2 = Graphics.FromImage(bmp2);
- grph2.DrawImage(bmp, 0, 0);
- grph2.DrawLine(blackpen, StartPoint, e.Location);
- grph.DrawImage(bmp2, 0, 0);
- grph.Dispose();
- grph2.Dispose();
- }
- }
- protected override void OnMouseUp(MouseEventArgs e)
- {
- //base.OnMouseUp(e);
- Graphics grph = Graphics.FromImage(bmp);
- grph.DrawLine(blackpen, StartPoint, e.Location);
- grph.Dispose();
- Invalidate();
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д