Painter/Component/UndoRedo.cs
(开头部分) 3KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.Linq;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Ink;
namespace Component
{
public abstract class CommandItem
{
public abstract void Undo();
public abstract void Redo();
protected CommandStack _commandStack;
protected CommandItem(CommandStack commandStack)
{
_commandStack = commandStack;
}
}
public class CommandStack
{
public delegate void EnableUI();
public event EnableUI EnableEvent;
//避免删除stroke事件影响
bool _undo_redo_flag = false;
private Stack<CommandItem> _undoStack;
private Stack<CommandItem> _redoStack;
public List<StrokeCollection> StrokeCollection { get; set; }
public CommandStack(List<StrokeCollection> strokes)
{
StrokeCollection = strokes;
_undoStack = new Stack<CommandItem>();
_redoStack = new Stack<CommandItem>();
}
public int Undo_Count() { return _undoStack.Count; }
public int Redo_Count() { return _redoStack.Count; }
public void Undo()
{
if (_undoStack.Count == 0) return;
_undo_redo_flag = true;
CommandItem item = _undoStack.Pop();
item.Undo();
_redoStack.Push(item);
_undo_redo_flag = false;
EnableEvent?.Invoke();
}
public void Redo()
{
if (_redoStack.Count == 0) return;
_undo_redo_flag = true;
CommandItem item = _redoStack.Pop();
item.Redo();
_undoStack.Push(item);
_undo_redo_flag = false;
EnableEvent?.Invoke();
后面还有 67 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。