直接在屏幕上绘制数字/图形?

时间:2011-10-17 16:58:08

标签: windows vb.net gdi

我正在整理Visual Basic Express 2010中的一个小程序,其中一部分是延迟截屏。

我已经有了主要的代码工作,我已经使用System.Threading.Thread.CurrentThread.Sleep(5000)进行了屏幕截图的Visual Basic延迟,但我正在寻找的是一种直接绘制的方法到屏幕剩余的秒数。

您知道如何在Windows中,在“设置”下的“显示属性”中,当您单击“识别”时,每台显示器上都会显示一个巨大的数字?

我正在尝试重新创建,数字倒计时直到拍摄屏幕截图,为用户提供充足的通知,让他们所需的应用程序成为焦点进行屏幕截图。

有可能这样做吗?或者它是否需要大量的编码?

非常感谢您提供的任何帮助

1 个答案:

答案 0 :(得分:1)

Label中创建Form控件并使用以下内容使其透明:

Me.TransparencyKey = Color.Gray ' or any other color.
Me.BackColor = TransparencyKey
Me.FormBorderStyle = FormBorderStyle.None

会做出这样的事情:

Screenshot


为了让您的窗口对鼠标透明,PInvoke GetWindowLongSetWindowLong

<DllImport("user32.dll", SetLastError:=True)> _
Private Shared Function GetWindowLong( _
 ByVal hWnd As IntPtr, _
 ByVal nIndex As Integer) As Integer
End Function

<DllImport("user32.dll")> _
Private Shared Function SetWindowLong( _
 ByVal hWnd As IntPtr, _
 ByVal nIndex As Integer, _
 ByVal dwNewLong As IntPtr) As Integer
End Function

然后在Form_Load()添加以下内容:

Dim hwnd As IntPtr = Me.Handle
Dim extendedStyle As Integer = GetWindowLong(hwnd, GWL_EXSTYLE)
SetWindowLong(hwnd, GWL_EXSTYLE, extendedStyle Or WS_EX_TRANSPARENT)

常量:

Const WS_EX_TRANSPARENT As Integer = &H20
Const GWL_EXSTYLE As Integer = -20