Sto sviluppando un'applicazione di tecnologia assistiva (in C#) che sovrascrive le informazioni in cima alla finestra attualmente aperta. Rileva elementi cliccabili e li etichetta.Come disegnare sopra il menu di scelta rapida in .NET/C#?
Per fare ciò, sto creando una finestra trasparente senza bordi con TopMost impostato su "true" e disegnando le etichette su quello. Ciò significa che c'è sempre una finestra che si libra davanti all'applicazione corrente, sulla quale posso disegnare le etichette.
Il problema è che questa finestra non copre il menu di scelta rapida, solo altre finestre. Quando l'utente fa clic con il pulsante destro del mouse, il menu di scelta rapida viene disegnato sopra l'overlay.
Devo essere in grado di etichettare gli elementi nel menu del tasto destro, ma non posso disegnarlo sopra con l'attuale implementazione. Qualcuno sa di una soluzione?
Modifica: questo è il codice pertinente per disegnare l'overlay. Ho impostato le opzioni del modulo nella finestra di progettazione del modulo, non nel codice, quindi non sono sicuro di quanto possa essere d'aiuto. Ho rimosso il codice non correlato al disegno, o la forma stessa:
public partial class OverlayForm : Form
{
public OverlayForm()
{
}
protected override void OnPaint(PaintEventArgs eventArgs)
{
base.OnPaint(eventArgs);
Graphics graphics = eventArgs.Graphics;
Brush brush = new SolidBrush(this.labelColor);
foreach (ClickableElement element in this.elements)
{
Region currentRegion = element.region;
graphics.FillRegion(brush, currentRegion);
}
}
}
Puoi mostrare il tuo codice per fare l'overlay – Jacobr365
@ Jacobr365 - Certo, aggiunto. :) – JackCC
Non penso sia possibile. Il menu di scelta rapida è disegnato ancor più "al massimo" rispetto al tuo modulo, poiché ottiene maggiore attenzione e un ordine z più alto dal sistema operativo. – DonBoitnott