При попытке сделать это возникает масса проблем. Во-первых, у вас нет рабочего стола, поэтому вы никогда не сможете полностью контролировать его, когда он станет недействительным.
[DllImport("User32.dll")]
static extern IntPtr GetDC(IntPtr hwnd);
[DllImport("User32.dll")]
static extern void ReleaseDC(IntPtr dc);
private void DrawDeskTop()
{
IntPtr desk = GetDC(IntPtr.Zero);
using (Graphics g = Graphics.FromHdc(desk))
{
g.FillRectangle(Brushes.Red, new Rectangle((SystemInformation.WorkingArea.Width / 2) - 4, (SystemInformation.WorkingArea.Height / 2) - 20, 8, 40));
g.FillRectangle(Brushes.Red, new Rectangle((SystemInformation.WorkingArea.Width / 2) - 20, (SystemInformation.WorkingArea.Height / 2) - 4, 40, 8));
}
ReleaseDC(desk);
}
Когда это запустится, все будет отлично выглядеть. Но как только вы переместите свою форму по центру или переместите другие окна, знак плюс исчезнет, поэтому вам придется рисовать его снова, и снова, и снова.