Me gustaría superponer un área gris y translúcida en toda la pantalla a través de C#. ¿Es posible hacerlo a través de Windows Forms y cómo voy a hacer esto?Superposición de pantalla para la captura de pantalla
Respuesta
Claro, solo cree una ventana translúcida y sin bordes que cubra todas las pantallas de escritorio.
Puede encontrar el rectángulo derecho a cubrir todas las pantallas con la siguiente LINQ:
Rectangle bounds = Screen.AllScreens
.Select(x => x.Bounds)
.Aggregate(Rectangle.Union);
asentando después la Izquierda, Arriba, anchura y altura de la ventana de bounds
Correcto, me pregunto cómo hacerlo. Parece que no puedo crear una ventana sin bordes, y cada vez que selecciono el formulario para "maximizar", no cubre toda la pantalla, y pierde los 5 píxeles inferiores y los 10 píxeles a la derecha. – cam
Maximizado probablemente no sea lo que quiere aquí. Desea que su ventana tenga el mismo tamaño que el área completa de la pantalla visible (en todas las pantallas, tal vez) y puede hacer que sea sin bordes estableciendo la propiedad 'FormBorderStyle' en' None'. – Joey
+1 Buen uso de Linq para manejar múltiples pantallas, ¡gracias! – BillW
Además de el uso de la sugerencia para establecer el 'Johannes propiedad FormBorderStyle en' No, también me puse las siguientes propiedades en este formulario utilizado para 'dim-out' de la pantalla:
- TopMost, Mostrar InTaskBar, CuadroDeControl, MaximizeBox, MinimizeBox: 'Falso
- propiedad Text: claro que
fijaría el 'dim-out' tamaño de formulario en el evento de carga del formulario: me gustaría usar el elegante código en la respuesta de Rob para establecer los límites de un formulario agregado a un proyecto si quería manejar el caso de múltiples monitores. Si sólo quería manejar un solo monitor, que acababa de hacer algo tan simple como:
// in the Load Event of the "dim-out" Form
this.Bounds = Screen.PrimaryScreen.Bounds;
Luego, por supuesto, puede mostrar esta "dim-out" Formulario cuando es necesario, en respuesta a lo que sea en tus Formas visibles.
Mostrar el formulario "dim-out" lo hará aparecer encima de las demás formas visibles de la aplicación (a menos que una de ellas tenga las propiedades TopMost o TopLevel establecidas).
Pero un buen efecto que puede lograr es mostrar su Formulario "dim-out" justo antes de mostrarse un MessageBox (o un formulario mostrado de forma modal): eso significa que tendrá el cuadro de diálogo MessageBox (o formulario modal) "al frente" con todo lo demás detrás "atenuado".
Así que aquí es como el código para mostrar la forma "atenuado" podría ser:
dimmedForm.Show();
// change these to suit your taste or purpose
// this.BringToFront();
// dimmedForm.BringToFront();
// example of showing a MessageBox over the dimmedForm
// which will block the current thread
MessageBox.Show("why not ?");
// now hide the dimmedForm
dimmedForm.Hide();
Es posible que desee echar un vistazo a la 'propiedad TopLevel (que no está expuesta en tiempo de diseño) y de actualización su conocimiento de cómo esa propiedad puede afectar el orden de los Formularios en la pantalla, así como el examen de la propiedad 'TopMost' de un Formulario (que está expuesto en el momento del diseño).
Necesitamos una función de "combinación de respuestas" :) (+1) –
- 1. Captura de pantalla de la segunda pantalla
- 2. Captura de pantalla de la pantalla actual
- 3. Pantalla de captura
- 4. Herramienta de captura de pantalla para BlackBerry?
- 5. Captura de pantalla Circumvent para iOS 4
- 6. Captura de pantalla en Haskell?
- 7. Captura de pantalla del iPhone para ver
- 8. Captura de pantalla en android
- 9. HTML5 video captura de pantalla
- 10. Captura de pantalla de la toma
- 11. Android OpenGL Captura de pantalla
- 12. Captura de pantalla durante la prueba
- 13. La captura de pantalla ignora algunas ventanas
- 14. Android tome la captura de pantalla programáticamente
- 15. Captura UIScrollView fuera contenido de la pantalla
- 16. iOS Captura parte de la pantalla
- 17. capturar la captura de pantalla utilizando .NET
- 18. ¿Cómo tomar la captura de pantalla programáticamente?
- 19. Impedir la captura de pantalla con DirectX
- 20. Recomendación para la captura de video en pantalla para demostraciones
- 21. Delphi - DirectX - OSD/Superposición de pantalla
- 22. captura de pantalla de escritorio oculto
- 23. Captura de impresiones de pantalla en Java
- 24. Captura de pantalla de la forma cuyas dimensiones son mayores que las dimensiones de la pantalla
- 25. C# Captura de pantalla Direct 3D
- 26. Captura de pantalla en Python - Cross Platform
- 27. VBA captura de pantalla completa WebBrowser
- 28. Captura de pantalla programática en dispositivo móvil
- 29. iPad 3 lenta captura de pantalla
- 30. Captura de pantalla Python 2+ monitores (ventanas)
Oye, tal vez finalmente puedas hacer que ese maldito prompt UAC sea útil, si pudieras posicionar tu ventana sobre su prompt ... –