Ответ 1
Способ 1. Вызовите Windows API
Вам нужны System.Drawing
и System.Runtime.InteropServices
. Возможно, вам придется добавить ссылки на проекты.
using System.Runtime.InteropServices;
using System.Drawing;
Добавьте методы в свой класс с помощью P/Invoke
[DllImport("User32.dll")]
public static extern IntPtr GetDC(IntPtr hwnd);
[DllImport("User32.dll")]
public static extern void ReleaseDC(IntPtr hwnd, IntPtr dc);
Получите объект Graphics
для всего экрана и нарисуйте с ним прямоугольник:
IntPtr desktopPtr = GetDC(IntPtr.Zero);
Graphics g = Graphics.FromHdc(desktopPtr);
SolidBrush b = new SolidBrush(Color.White);
g.FillRectangle(b, new Rectangle(0, 0, 1920, 1080));
g.Dispose();
ReleaseDC(IntPtr.Zero, desktopPtr);
Проблема с этим методом заключается в том, что если экран вообще обновится, прямоугольник будет перезаписан, что делает его бесполезным для большинства практических приложений.
Способ 2. Создание формы без полей.
Как и раньше, вам нужна ссылка на проект. На этот раз в System.Windows.Forms
. Вам снова понадобится System.Drawing
:
using System.Drawing;
using System.Windows.Forms;
Создайте новую форму, удалите ее границы, заполните экран и установите ее поверх панели задач:
Form f = new Form();
f.BackColor = Color.White;
f.FormBorderStyle = FormBorderStyle.None;
f.Bounds = Screen.PrimaryScreen.Bounds;
f.TopMost = true;
Application.EnableVisualStyles();
Application.Run(f);
Возможная проблема заключается в том, что пользователь может просто добавить + вкладку в окно. Если вы хотите сделать более сложную графику, вам нужно написать код чертежа, как это. Чтобы сделать фоном прозрачным, установите его TransparentKey
таким же, как и Backolor
.
Я только что протестировал их в.NET 4.5 и Windows 7, поэтому для более ранних версий он может отличаться. Дополнительная информация здесь и здесь.