Рисование линии мышкой на 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);