Рисование линии мышкой на 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д