2013-06-14 18 views
5

Sto sviluppando una lente di ingrandimento in C# .NET (utilizzando WindowsForm) che mostra il massimo grado di click-through attraverso il modulo. Questa finestra in primo piano mostra una parte specifica dello schermo.Cambio formato più in alto senza sfarfallio

Il problema che sto avendo è che a prendere lo screenshot che ho bisogno di Hide() e Show() la forma (altrimenti mi avrebbe preso uno screenshot della lente) e questo crea un fastidioso sfarfallio in cui la lente di ingrandimento scompare e appare di nuovo rapidamente .

Come è possibile acquisire uno screenshot del desktop senza nascondere/mostrare il modulo? C'è un altro approccio/soluzione alternativa?

Grazie.

+0

Correlato: [Escludendo alcune finestre dalla cattura dello schermo] (http://stackoverflow.com/q/8080559) –

+0

Stai dicendo che vuoi scattare una schermata dell'area all'interno della lente d'ingrandimento o che vuoi fare una schermata dell'area sotto la lente d'ingrandimento (leggi l'area non ingrandita)? –

+0

Dai un'occhiata a http://msdn.microsoft.com/en-us/library/windows/desktop/ms692162%28v=vs.85%29.aspx, non l'ho usato comunque. Sono sicuro che non è quello che stai cercando in questa domanda, ma potrebbe essere di aiuto nel tuo progetto. – Odys

risposta

3

Utilizzare la proprietà Opacity del modulo. Impostalo al 99% nel designer. Quando sei pronto per scattare la schermata, impostalo su 0, fai lo scatto e riportalo a 0,99.

Il cambiamento è immediato, non è necessario attendere e non sfarfallio né ridipinture. Fare non ripristinarlo a 1.0, che sfarfallio.

Fare attenzione a rimuovere l'effetto "Hall of Mirrors" dall'ingranditore. Bit di perdita :)

+0

Grazie, confermato, il cambiamento è molto più veloce e lo sfarfallio è quasi finito, praticamente invisibile. A proposito, non ho notato l'effetto "Hall of Mirrors" ora "gone" ... Che effetto intendevi? – adelriosantiago

Problemi correlati