Рисование линии мышкой на PictureBox - C#

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

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

Всем привет. Решил побаловаться, попробовать реализовать некое подобие Paint на C#. Начал с рисования линии. Вроде бы делаю все правильно: когда пользователь нажимает мышку то фиксирую начальную точку и картинку, когда пользователь двигает мышь, то загружаю в PictureBox картинку которая была раньше и рисую линию по точкам. Но есть несколько проблем: 1) В процессе рисования линия постоянно то исчезает то появляется 2) Когда отпускаю кнопку мыши то линия исчезает
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApp
{
    public partial class MainForm : Form
    {
        private Point start;
        private bool drawing = false;
        private Image orig;
        public MainForm()
        {
            InitializeComponent();
        }
 
        private void pictureBox_MouseDown(object sender, MouseEventArgs e)
        {
            start = new Point(e.X, e.Y);
            orig = pictureBox.Image;
            drawing = true;
        }
 
        private void pictureBox_MouseMove(object sender, MouseEventArgs e)
        {
            if (!drawing) return;
            var finish = new Point(e.X, e.Y);
            pictureBox.Image = orig;
            var pen = new Pen(Color.Black, 1f);
            var g = Graphics.FromHwnd(pictureBox.Handle);
            g.DrawLine(pen, start, finish);
            pictureBox.Refresh();
        }
 
        private void pictureBox_MouseUp(object sender, MouseEventArgs e)
        {
            drawing = false;
        }
    }
}
Что я делаю не так?

Решение задачи: «Рисование линии мышкой на PictureBox»

textual
Листинг программы
        private Point start;
        private bool drawing = false;
        Bitmap bm = new Bitmap(300, 300);
        Bitmap bm2 = new Bitmap(300, 300);

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

13   голосов , оценка 3.923 из 5