Credo che sia il caso specifico che si risolve creando un controllo personalizzato (o Custom Control).
In breve, devi creare un controllo ex novo che visualizzi l'interfaccia di cui hai bisogno disegnandola attraverso le funzioni GDI+ esposte attraverso l'oggetto Graphics.
L'immagine che dovrà fare da sfondo sarà una proprietà di questo controllo; assegnando il bitmap, il controllo andrà a visualizzare l'immagine e a disegnare sopra di essa la griglia con le caratteristiche grafiche desiderate.
Un esempio di come imbastire questa architettura puoi trovarlo in questo articolo, ad esempio.
Nell'articolo è indicato anche come esporre degli eventi personalizzati e, dall'altro lato, come intercettare quelli basi (es. clic del mouse) in modo da tradurli appunto in eventi significativi (tu prenderai le coordinate del mouse e, individuando il riquadro in base alla posizione del puntatore, restituirai l'indice di tale riquadro, disegnato secondo le tue prerogative).
Prova a dare un'occhiata e magari costruire un cosiddetto PoC (Proof of Concept) per vedere come funziona la cosa, creando poi il controllo tramite codice (quindi a runtime e non in fase di progettazione) in una applicazione di esempio e modificando le proprietà per vedere se funziona come dovrebbe.
Ciao!![]()