2010-07-30 14 views
6

Ho un dispositivo di decorazione che si sta muovendo con il cursore del mouse. Tuttavia, non appena il mouse si muove fuori dalla finestra, l'adornatore viene tagliato.WPF Moving Adorner all'esterno di AdornerLayer o Window

È possibile espandere il livello di adorner su tutto lo schermo o creare un nuovo livello di adorner.

+0

Hi! Mi piacerebbe usare lo stesso (adornatore che si muove con il mouse fuori dai limiti della finestra) per la funzionalità di trascinamento della selezione tra applicazioni. Hai trovato qualche soluzione per questo? Tutti gli articoli menzionati di seguito coprono solo lo spostamento dell'ornatore all'interno della stessa finestra dell'applicazione ... in anticipo. – Sebastian

risposta

0

Probabilmente si potrebbe fare questo, anche se non sono sicuro di quello che si vorrebbe fare con il livello di adorner. La mia soluzione consentirà solo all'adustratore di seguire il mouse finché la finestra ha il focus. Per favore, condividi qual è il tuo obiettivo finale, così posso aiutarti meglio.

La mia idea sarebbe quella di creare una finestra a schermo intero, senza bordi con uno sfondo trasparente per contenere qualsiasi controllo desiderato. La parte non trasparente della tua finestra si troverebbe all'interno di una griglia.

  1. Crea una nuova finestra. Imposta WindowBorderStyle su "None", Width and Height su "Auto" e "WindowState" su "Maximized". (Al momento non guardo l'IDE, quindi i nomi delle proprietà potrebbero essere leggermente disattivati.)

  2. Copia il codice XAML per la griglia (o qualsiasi altro contenitore primario che stai utilizzando) nella finestra originale, e incollalo nella tua nuova finestra. Assicurati di sostituire la griglia vuota nella tua nuova finestra con la griglia che incolli.

Ciò dovrebbe consentire di avere il livello di adorner che segue il mouse intorno all'intera finestra.

Ancora una volta, inserisci qui il tuo obiettivo esatto, così posso dare una risposta più adatta alle tue particolari esigenze.

0

forse vuole disegnare l'area di selezione sto scontando lo stesso problema, ma è possibile vedere il link sottostante, funziona. http://www.codeproject.com/Articles/22952/WPF-Diagram-Designer-Part-2
Ho trovato che non è possibile ricevere l'evento del mouse quando lo sfondo è trasparente. Se si fornisce allo sfondo un po 'di sfondo, allora tutto è ok.

protected override void OnRender(DrawingContext dc) { 
    dc.DrawRectangle(bg, null, new Rect(RenderSize)); 
    dc.DrawRectangle(Brushes.Red, null, new Rect(start, end)); 
} 

il pennello bg è proprio come,

private Brush bg = new SolidColorBrush(Color.FromArgb(0x01, 0, 0, 0));