2010-07-31 4 views
6

Можно ли рисовать изображения и рисовать текст ... вне формы .. я имею в виду буквально за пределами ...Draw/краска Форма

я знаю свой глупый вопрос, чтобы спросить, но можем ли мы ...

+1

или без формы – Moon

ответ

10

Вы можете «обмануть», создав форму и установив ее свойство TransparentColor на свой цвет фона, затем нарисуйте ее. Однако это запрещает вам рисовать прозрачный цвет, потому что он не будет отображаться.

Или вы можете нарисовать прямо на рабочий стол.

[DllImport("User32.dll")] 
public static extern IntPtr GetDC(IntPtr hwnd); 
[DllImport("User32.dll")] 
public static extern void ReleaseDC(IntPtr dc); 

IntPtr desktopPtr = GetDC(IntPtr.Zero); 
Graphics g = Graphics.FromHdc(desktopPtr); 

// Do graphics manipulation here with "g" object 

// Very important - free desktop graphics. 
g.Dispose(); 
ReleaseDC(desktopPtr); 
+4

Проблема с рисованием непосредственно в окне рабочего стола является то, что она не будет прилипать. В следующий раз, когда рабочий стол будет перерисован, ваш рисунок исчезнет. В то время как вы можете перехватывать насос сообщений на рабочем столе и перерисовывать, когда он перерисовывается, это серьезный перебор. Использование полноэкранного прозрачного окна, которому принадлежит ваше главное окно, является самым дешевым способом добраться туда. – Tergiver

1

Вы не можете опираться на то, чего не существует. Область вне формы, по этому определению, не существует в контексте формы.

Я согласен с Henk, хотя, вы может Жеребьевка на прозрачных формах.

Смежные вопросы