我有一个表单可以捕获两个显示器的所有屏幕,但我一直收到一条消息"视频宽度必须能被8整除。"当我从辅助线程运行此代码并且屏幕大小为:
时1366w x 768h在第二台显示器上。
如果我在主线程上运行此代码它可以工作,不确定这是否重要,但我仍然无法弄清楚它是如何知道它的视频"。我已经尝试过整理价值观,但仍然没有做到,我知道问题出现在某个地方的代码中,但有人可以告诉我们是否有办法防止这种情况发生?
此代码返回所有屏幕的maxwidth和maxheight。
int noofscreens = 0;
Screen[] allScreens;
allScreens = Screen.AllScreens;
noofscreens = allScreens.Length;
int maxwidth = 0, maxheight = 0;
int boundValueX = 0, boundValueY = 0;
for (int i = 0; i < noofscreens; i++)
{
// WIDTH
if (allScreens[i].Bounds.X >= 0)
{
if (maxwidth < (allScreens[i].Bounds.X + allScreens[i].Bounds.Width)) maxwidth = allScreens[i].Bounds.X + allScreens[i].Bounds.Width;
}
else if (allScreens[i].Bounds.X < 0)
{
maxwidth = maxwidth + allScreens[i].Bounds.X;
boundValueX = allScreens[i].Bounds.X;
}
// HEIGHT
if (allScreens[i].Bounds.Y >= 0)
{
if (maxheight < (allScreens[i].Bounds.Y + allScreens[i].Bounds.Height)) maxheight = allScreens[i].Bounds.Y + allScreens[i].Bounds.Height;
}
else if (allScreens[i].Bounds.Y < 0)
{
maxheight = maxheight + allScreens[i].Bounds.Y;
boundValueY = allScreens[i].Bounds.Y;
}
}
感谢。