Рисование прямой линии, как в 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();
    }
}

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


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

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

8   голосов , оценка 4 из 5
Похожие ответы