Inlämning – MyPaint

Detta är en inlämningsuppgift tänkt att användas inom kursen Programmering 2 för gymnasiet. Förkunskaper är arv, polymorfism och Windows Forms. Alla dessa förkunskaper finnas att hämta i andra artiklar på csharpskolan. Inlämningsuppgiften ingår i ett större upplägg kring kursen Programmering 2.

Bakgrund

Kanske har du använt programmet ”Paint” någon gång? Det är ett väldigt enkelt program som har följt med Windows i alla versioner. Din uppgift kommer att bli att skapa ett eget ”Paint” med hjälp av Windows Forms.

Uppgift

Programmet ska ha följande funktioner:

  • Ett sätt att välja färg, antingen mellan några förutbestämda färger eller med någon dialog från .NET.
  • Ett sätt att välja tjocklek på penseln.
  • Olika ritverktyg:
    • Pensel, som har tjocklek och färg
    • Linje, som har tjocklek och färg
    • Fylld rektangel, som har färg
    • Fylld ellips, som har färg
  • Ett sätt att välja mellan de olika verktygen.
  • Kunna börja om och sudda det som ritats.
  • Kunna spara bilden som t.ex. BMP.
  • Kunna ladda en bild, t.ex. en BMP eller en PNG.
  • Verktygen ska såklart fungera, dvs. de ska kunna rita.

De flesta verktyg (linje, ellips, rektangel) kräver en start- och en slutpunkt.

Det finns några saker som kan vara svåra att få till och som inte borde prioriteras. T.ex. vad ska hända om programmet ändrar storlek? Ska man ändra storlek på arbetsytan eller centrera den arbetsyta man redan har?

När man ritar med verktyg som kräver start- och slutpunkt så vill man kanske rita under tiden som man drar med musen. Alltså så att man ser ungefär hur det kommer att se ut innan man släpper musknappen. Denna funktion är relativt svår att få till och kan utelämnas helt. Det kan såklart bli en extra stjärna om du lyckas med detta också.

Klassdiagram

Verktygen i programmet ska skrivas som klasser och använda en OOP-design. Här följer ett förslag på en sådan design:

Du kan såklart göra en egen design. Detta är som sagt bara ett förslag. Du kommer säkert att behöva lägga till en och annan hjälpmetod i klasserna.

Du har stor frihet i att utforma ditt program, både kod- och utseendemässigt, i denna uppgift. Det finns en hel del intressanta klasser i Windows Forms som man kan ha nytta av. Här kommer ändå ett litet förslag på hur ”MyPaint” skulle kunna se ut:

Vidare utveckling

Denna uppgift går att bygga på ytterligare. Här kommer några förslag:

  • Olika former att rita med, t.ex. cirklar, rektanglar, stjärnor.
  • Fler verktyg, t.ex. rektanglar och ellipser som inte är fyllda utan använder linjer.
  • Drag & drop av filer, så att du t.ex. kan dra in en bild för att ladda den.
  • Snabbare uppritning. Troligtvis kommer den uppritning du använder inte att vara optimal. Finns det snabbare sätt?
  • Bygga en Undo-funktion.
  • Göra en förhandsvisning på olika verktyg, t.ex. linje och rektangel.

/Lycka till

Scroll to top