se puede ver un ejemplo de código del mundo real dentro https://uiautomationverify.codeplex.com/SourceControl/latest#UIAVerify/Tools/visualuiverify/utils/screenrectangle.cs
Esto dibuja un rectángulo que aparecerá en el pantalla hasta que el usuario elija eliminarla en una posición arbitraria (no se volverá a pintar). Utiliza una forma de Windows que está oculta/aparece como una ventana emergente.
Este es el código detrás de la herramienta UIAVerify.exe
en el SDK de Windows actual.
Si desea utilizar lo anterior, copie los siguientes archivos en su proyecto:
utils\screenboundingrectangle.cs
utils\screenrectangle.cs
win32\*
que necesite actualizar los espacios de nombres en consecuencia + añadir referencias a System.Drawing
+ System.Windows.Forms
A continuación, se puede dibujar un rectángulo con el siguiente código:
namespace Something
{
public class Highlighter
{
ScreenBoundingRectangle _rectangle = new ScreenBoundingRectangle();
public void DrawRectangle(Rectangle rect)
{
_rectangle.Color = System.Drawing.Color.Red;
_rectangle.Opacity = 0.8;
_rectangle.Location = rect;
this._rectangle.Visible = true;
}
}
}
y
var rect = Rectangle.FromLTRB(100, 100, 100, 100);
var hi = new Highlighter();
hi.DrawRectangle(rect);
No se admite ningún oficialmente manera limpia para dibujar en la ventana del escritorio de cualquier idioma. En la práctica, la mayoría de los métodos que logran el dibujo más cercano al limpio en el escritorio implican inyectar su propia dll en el proceso de Explorer y crear una subclasificación del procedimiento de ventana para la ventana del escritorio. Sin embargo, no recomendaría hacer esto en C#. Además, no hay garantía de que dichos métodos continúen funcionando en futuras versiones de Windows o con futuros service packs o revisiones para las versiones existentes de Windows. –