Paint Application – OOP Tabanlı Masaüstü Çizim Aracı
Proje Hakkında
Paint Application, C# ve Windows Forms kullanılarak geliştirilmiş bir masaüstü çizim uygulamasıdır. Proje, .NET ortamında Nesne Yönelimli Programlama (OOP) prensiplerinin gerçek bir uygulama üzerinde nasıl hayata geçirildiğini göstermek amacıyla bir vaka çalışması (case study) olarak geliştirilmiştir.
Uygulama; serbest çizim, geometrik şekil çizimi (dikdörtgen, elips, üçgen, altıgen), renk seçimi, silgi, şekil seçme ve silme gibi temel çizim araçlarını destekler. Kullanıcılar çizimlerini kaydedebilir, daha sonra tekrar açabilir veya yeni bir tuval ile çalışmaya devam edebilir.
Projenin temel odak noktası OOP tabanlı mimaridir. Ortak özellikleri ve davranışları tanımlayan soyut bir Shape (Şekil) sınıfı oluşturulmuş, RectangleShape, EllipseShape, TriangleShape ve HexagonShape gibi özel şekil sınıfları bu sınıftan türetilmiştir. Bu yapı sayesinde:
Abstraction (Soyutlama): Ortak özellikler ve davranışlar temel sınıfta tanımlanmıştır
Inheritance (Kalıtım): Özel şekil sınıfları, Shape sınıfından türetilmiştir
Encapsulation (Kapsülleme): Şekil özellikleri ve çizim mantığı sınıflar içerisinde gizlenmiştir
Polymorphism (Çok Biçimlilik): Farklı şekiller, ortak bir arayüz üzerinden tek tip olarak yönetilmiştir
Kullanıcı etkileşimi mouse event’leri ile sağlanmış, çizimler System.Drawing kütüphanesi kullanılarak tuval üzerine render edilmiştir. Her ekran yenilemesinde tüm şekiller yeniden çizilerek tutarlı bir görsel deneyim sunulmuştur.
Dosya işlemleri için çizimler, JSON serialization kullanılarak özel bir .shapes dosya formatı ile kaydedilmektedir. Kaydedilen veriler arasında her şeklin türü, koordinatları, boyutları ve renk bilgileri yer alır. Yükleme işlemi sırasında bu veriler okunarak çizim birebir yeniden oluşturulur.
Bu proje sürecinde; Windows Forms grafik sistemi, olay tabanlı UI geliştirme, JSON ile veri saklama, ve tuval sınırlarını aşmayan çizim sistemi gibi konularda pratik deneyim kazandım. Proje, temiz kod, genişletilebilir mimari ve bakımı kolay masaüstü uygulamaları geliştirme yetkinliğimi göstermektedir.
