Skip to content

Yut-ka/Paint-Tool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎨 Paint Tool (WPF, C#)

.NET WPF OOP Status

Учебный проект для практики ООП на примере приложения на WPF: рисование различных геометрических фигур, каждая фигура описана отдельным классом (наследование, агрегация/композиция, инкапсуляция, полиморфизм).

Проект создан для тренировки архитектуры и принципов SOLID, а не как полноценный редактор.


🚀 Возможности

  • Базовые геометрические фигуры: Линия, Прямоугольник, Эллипс (и др. по мере развития).
  • Общий интерфейс/базовый класс для фигур (полиморфный Draw/Render).
  • Параметры фигур: позиция, размеры, толщина контура, цвет заливки/штриха.
  • Простая архитектура для добавления новых фигур без изменений существующего кода (Open/Closed).

(Если реализованы выделение/перемещение/удаление/слои/Undo-Redo — перечислите здесь.)


🧱 Архитектура и ООП

  • Базовый класс ShapeBase (или интерфейс IShape) — общие свойства/методы (позиция, цвета, Draw(DrawingContext) и т.п.).
  • Наследники: LineShape, RectangleShape, EllipseShape — переопределяют отрисовку и специфику.
  • Агрегация/композиция: холст/документ (например, CanvasModel) агрегирует коллекцию фигур IList<IShape>.
  • Инкапсуляция: управление внутренним состоянием фигур через методы/свойства (валидация, уведомления).
  • MVVM (по желанию): разделение Model (фигуры), View (XAML), ViewModel (команды, биндинги).

Пример контракта фигуры (идея):

public interface IShape
{
    Point Start { get; set; }
    Point End { get; set; }
    Brush Stroke { get; set; }
    double StrokeThickness { get; set; }
    Brush Fill { get; set; }
    void Draw(DrawingContext dc);
}

📂 Примерная структура проекта

Paint-Tool/
├─ PaintTool.sln
└─ PaintTool/
   ├─ Models/          # Фигуры, модель холста/документа
   ├─ ViewModels/      # Команды, состояние UI (если MVVM)
   ├─ Views/           # XAML-окна/контролы (MainWindow.xaml)
   ├─ Services/        # Сохранение/загрузка, диалоги и т.п.
   ├─ Resources/       # Стили, шаблоны
   └─ App.xaml, Program.cs (или App.xaml.cs)

Адаптируйте под фактические файлы репозитория.


🖥️ Системные требования

  • Windows 10/11
  • .NET 6+ (или версия, используемая в проекте)
  • Visual Studio 2022 с компонентами «.NET Desktop Development»

▶️ Запуск

# Клонировать репозиторий
git clone https://github.com/Yut-ka/Paint-Tool.git

# Открыть решение
# 1) Откройте PaintTool.sln в Visual Studio
# 2) Выберите конфигурацию Debug
# 3) Запустите (F5)

➕ Добавление новой фигуры (гайд)

  1. Создайте класс TriangleShape : ShapeBase (или реализуйте IShape).
  2. Добавьте свойства (например, третья точка или радиусы).
  3. Переопределите отрисовку (Draw) с использованием DrawingContext/Geometry/Shape.
  4. Зарегистрируйте инструмент в UI (кнопка/команда) и логику создания экземпляров.
  5. Покройте тестами логику (если используете unit-тесты) и добавьте пример в демо.

🧭 Дорожная карта (идеи для развития)

  • Выделение и трансформации (перемещение, resize, rotate).
  • Множественный выбор, группировка (композиция фигур).
  • Слои, порядок отрисовки, Z-index.
  • Undo/Redo (Command pattern, Memento).
  • Сохранение/загрузка в SVG/PNG/JPEG.
  • Палитра/пипетка, штрихи, прозрачность, градиенты.

🤝 Вклад

PR/Issues приветствуются — проект учебный, поэтому идеи и ревью только в плюс. Пишите замечания по архитектуре и ООП.


📄 Лицензия

Укажите лицензии (например, MIT) в файле LICENSE, если нужна.


👤 Автор

Yut-ka — тренировочный проект по ООП и WPF.

About

The simple and beautiful desktop drawing app for WPF.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages