0

我的应用程序是一个 Windows 窗体。

我尝试使用 windows 壁纸,但这取决于“填充”、“拉伸”、“适合”或“平铺”设置。我只需要桌面上的图像,但包括任务栏“下方”的部分,因为在透明任务栏的情况下这部分是可见的。

为什么我需要这个?因为我有一个托盘应用程序,它在打开时会从任务栏下方滑动。而且我需要在那里设置一个遮罩,所以在它到达任务栏的顶部之前看不到它的滑动。同样,这只是任务栏透明时的问题。

4

3 回答 3

0

我不确定我是否正确理解了您的问题。但对我来说,您似乎需要创建壁纸的图像。如果看起来更容易,请查看以下位置的注册表项:

HKEY_CURRENT_USER\Control Panel\Desktop

这将为您提供墙纸的路径、大小、平铺/无平铺等信息。

于 2012-07-23T10:05:19.943 回答
0

您可以尝试一个名为PaintDesktop的 Win32 函数,但除非我误解了您应该能够调整窗口的高度,因此它永远不会真正位于任务栏后面...

于 2012-07-23T10:56:50.120 回答
0

为什么我需要这个?因为我有一个托盘应用程序,它在打开时会从任务栏下方滑动。而且我需要在那里设置一个遮罩,所以在它到达任务栏的顶部之前看不到它的滑动。同样,这只是任务栏透明时的问题。

这里的问题是您从整个屏幕的底部开始向上滑动,而不是从屏幕工作区域的底部(即任务栏的顶部)开始。这就是为什么您会看到弹出窗口在透明任务栏后面向上滑动。

幸运的是,该解决方案比获取桌面背景和/或进行任何类型的遮罩要简单得多。它也快得多,而且你的眼睛糖果不会对用户的计算机造成不必要的负担,这总是好的。

你只需要确定屏幕工作区域的坐标,Windows定义为应用程序可以使用的区域,不包括任务栏和其他侧边栏。Screen.PrimaryScreen.WorkingArea您可以通过查询属性在 WinForms 中轻松获取此信息。这将返回Rectangle与主屏幕的工作区域相对应的 a。由于您知道任务栏始终显示在主屏幕上,这正是您想要的。

获得主屏幕工作区域的坐标后,从底部开始弹出窗口的幻灯片。*

这是一个很好的教训,为什么你应该总是解释你为什么要完成某事。通常有一个更好的方法是你没有想到的。

*当然,我忽略了用户可能没有将他们的任务栏放在屏幕底部的事实。你可以把它放在两边,甚至放在上面。在我看来,您的问题中也没有考虑到这一点。如果这是您仅为自己编写的应用程序,或者是为受控环境编写的应用程序,您可以确保没有人将任务栏置于非默认位置,那可能没问题。但是,如果您正在编写软件以分发给更广泛的受众,您将需要考虑到这一点。当然,无论任务栏位于何处,rcWork坐标都是正确的,但您需要知道是从底部、左侧、右侧还是顶部开始滑动弹出窗口。

于 2012-07-23T11:00:12.923 回答