Ciao
Io (ma prendila per quello che è: un'opinione personale) non affiderei la grafica ad un gruppo di bottoni, creerei un controllo apposta per il disegno. Quanto alla classe per gestire l'icona vera e propria, farei qualcosa di abbastanza semplice: un array bidimensionale di bool, o ancora meglio una matrice di BitArray.
Nel complesso ho sviluppato una cosa di questo genere:
Il codice si può di certo migliorare, comunque tutto quello che devi fare per usarlo è aggiungere un IconControl al tuo Form (anche dal Designer), e quindi creare un oggeto YourIcon e assegnarlo alla proprietà BackedIcon del controllo. Poi per salvare l'oggetto puoi usare il suo metodo Save, e per visualizzarlo come stringa il metodo ToString().
Spero che possa essere una buona idea per iniziare, ciao!
Luca