Prosty program graficzny/kolorowanka w C#

0

Witam,

Na początek chciałbym się przywitać ze wszystkimi użytkownikami forum gdyż jest
to mój pierwszy post.

Jakiś czas temu (dość długi już prawdę mówiąc) napisałem prosty program graficzny
w rodzaju komputerowej kolorowanki - chciałbym się nim pochwalić i wystawić na ogień
krytyki.

Program
Strona programu i kod źródłowy

Tylko zaznaczam od razu, że ja zdaje sobie sprawę, że mój kod do najbardziej eleganckich
nie należy i ogólnie rzecz biorąc profesjonalizmem to nie błyszcze. Wiele rzeczy należało
by jeszcze poprawić w moim programie lub w ogóle zrobić inaczej.

Przy okazji może ktoś by mi podpowiedział jak dobrze zrobić powiększanie "płótna" w takim
programie - tutaj niby działa ale przede wszystkim muli jakoś na powiększonym.

3

Odnośnie kodu się nie wypowiem. ale co do samej aplikacji:

  • brakuje opcji cofania
  • w kodzie dobrze jest używać angielskich nazw, ale sam interface aplikacji lepiej, jakby był po polsku. Zwłaszcza, że raczej kolorowankami będą się bawić dzieciaki
  • ewentualne w ramach ćwiczeń - zapoznać się z hasłem i18n i dołożyć możliwość zmiany języka
  • fajnie, jakby była możliwość dodania swoich obrazków
  • kolorowanka jest stosunkowo niewielka, moim zdaniem lepiej jakby była na środku okna a nie w lewym górnym rogu
  • przydała by się możliwość zmiany kształtu rysika na okrągły, a nie tylko różnej wielkości kwadraty
  • w temacie rysików - różnica między małym a dużym jest niewielka. Mały powinien być naprawdę malutki, a "large" o wiele większy
  • mamy "reset all pages" ale nie widzę opcji wyczyszczenia tylko aktualnego obrazka
  • niepotrzebnie powiększanie jest schowane w menu, ja bym raczej dał zoom gdzieś na wierzch

Ale poza w/w uwagami to aplikacja jest raczej OK. Dam dzisiaj (jak nie zapomnę) dzieciakom do testowania i zobaczymy, jak wypadną testy na realnych użytkownikach tej aplikacji. Dla mnie w skali szkolnej to takie 3+ / 4-, nie jest źle, ale trzeba jeszcze trochę popracować.

1

OK, dziękuje za owszem słuszne uwagi, chociaż nie wiem czy kiedyś jeszcze
będę miał czas i ochotę do pracy żeby przynajmniej większość z nich wprowadzić
w życie.

BTW, to miało być i dla dzieci i nie dla dzieci, raczej rodzaj takiego trochę komputerowego
żartu. Ale uwaga o języku oraz i18n i tak słuszna, przydałoby się.

4

Na gita wrzuca się tylko kod, a nie pliki binarne, katalogi Debug i Release. Jeżeli chcesz udostępnić binarki, to najlepiej jak zrobisz instalator

3

Czesc

chciałbym się nim pochwalić i wystawić na ogień krytyki.

Pierwsze co, to gratulacje działającego projektu, który pomysł jest ciekawy/inny, duzy plus

a teraz po slodkosciach czas na krytyke

  • struktura projektu. Wszystko masz pod /ColorBookCS. png, cs, config, ico. Nie otworzylem tego w visual studio/rider, wiec nie wiem jak tam wyglada ta struktura
  • ColorBook.cs

MenuStrip menuBar;
ToolStripMenuItem colorBookMenu, pencilMenu, optionsMenu, helpMenu;
ToolStripMenuItem nextPageMenuItem, prevPageMenuItem, saveAsMenuItem, exitMenuItem;
ToolStripMenuItem pastelMenu, marineMenu, groundMenu;
ColorMenuItem yellowMenuItem, orangeMenuItem, lightPinkMenuItem,
pinkMenuItem, redMenuItem, purpleMenuItem, violetMenuItem;
ColorMenuItem skyBlueMenuItem, blueMenuItem, darkBlueMenuItem, yellowGreenMenuItem,
darkGreenMenuItem, seledineMenuItem;
ColorMenuItem lightGrayMenuItem, slateGrayMenuItem, blackMenuItem, goldMenuItem, brownMenuItem;
ToolStripMenuItem customColorMenuItem, rubberMenuItem;
ToolStripMenuItem pencilSizeMenu, zoomMenu, resetMenuItem;
ToolStripMenuItem smallPencilMenuItem, mediumPencilMenuItem, bigPencilMenuItem, largePencilMenuItem;
ToolStripMenuItem zoom50MenuItem, zoom100MenuItem, zoom200MenuItem, zoom400MenuItem;
ToolStripMenuItem aboutMenuItem;
ToolStrip toolBar;
ColorBarButton yellowButton, pinkButton, redButton, blueButton, darkGreenButton, lightGrayButton,
brownButton, blackButton, orangeButton, skyBlueButton, yellowGreenButton, slateGrayButton;
ToolStripButton rubberButton, customColorButton;
ToolStripLabel pencilSizeLabel;
ToolStripButton pencilSmallButton, pencilMediumButton, pencilBigButton, pencilLargeButton;
StatusBar statusBar;
StatusBarPanel colorPanel, pagePanel, coordPanel;

eeee, moze ja tego nie widze, ale jakie jest zadanie klasy ColorBook? Bo poki co wyglada ze ona robi wszystko tak zwany GOD OBJECT (czasami zwany sfinksem)
poczytaj o SOLID https://pl.wikipedia.org/wiki/SOLID_(programowanie_obiektowe).

Takze, na tym etapie przestane patrzec na architekture, bo po prostu wypadaloby ja przepisac od nowa

  • Page.cs
    zakomentowany kod. Co on tam robi? Od tego jest git, by tego nie robic. Jezeli potrzebujesz jakas wersje zapisac to zapisz i o taguj sobie i zawsze mozesz szybko wrocic do tego

Graphics g = Graphics.FromImage(_canvas);

poczytaj o var https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/var
nazywaj zmienne tak by wiadomo bylo czym sa https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/general-naming-conventions
usun magic numbers

sadze ze poki co wystarczy, jest nad czym popracowac ;)

0

@Meini

Na gita wrzuca się tylko kod, a nie pliki binarne, katalogi Debug i Release.

Będę o tym pamiętał na przyszłość (czy też raczej bardziej uważał).

@fasadin
Również dziękuje i za miłe słowo i za uwagi z czego powinienem się dokształcić.

1 użytkowników online, w tym zalogowanych: 0, gości: 1