Отмена
private void btnUndo_Click(object sender, EventArgs e)
{
// Проверка, есть ли что отменять
if (history.Count > 0)
{
// Удаление последнего элемента из истории
history.RemoveAt(history.Count - 1);
// Обновление изображения на основе истории
UpdateImage();
}
}
Вернуть
private void btnRedo_Click(object sender, EventArgs e)
{
// Проверка, есть ли что возвращать
if (redoHistory.Count > 0)
{
// Добавление последнего элемента из истории redo в историю
history.Add(redoHistory[redoHistory.Count - 1]);
// Удаление последнего элемента из истории redo
redoHistory.RemoveAt(redoHistory.Count - 1);
// Обновление изображения на основе истории
UpdateImage();
}
}
Ластик
private void btnEraser_Click(object sender, EventArgs e)
{
// Изменение режима рисования на ластик
drawingMode = DrawingMode.Eraser;
}
// Обработчик события рисования
private void pictureBox_MouseDown(object sender, MouseEventArgs e)
{
if (drawingMode == DrawingMode.Eraser)
{
// Рисование ластиком
using (Graphics g = pictureBox.CreateGraphics())
{
g.FillEllipse(Brushes.White, e.X - eraserSize / 2, e.Y - eraserSize / 2, eraserSize, eraserSize);
}
}
}
Сохранение при закрытии
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
// Отображение диалогового окна сохранения
if (imageModified)
{
DialogResult result = MessageBox.Show("Сохранить изменения?", "Сохранение", MessageBoxButtons.YesNoCancel);
if (result == DialogResult.Yes)
{
// Сохранение изображения
SaveImage();
}
}
}