我目前正在撕裂我的頭髮與這個問題。C# - 多桌面壁紙應用程序 - 邏輯問題
當我到:
我可以
- 生成的圖像,每個屏幕
- 創建彼此相鄰的兩個畫面的大型圖像。
- 將此設置爲平鋪牆紙。
我想做什麼:
- 支持任意數量的監視器
- 支持顯示器的所有偏移,如顯示器上方或下方,或對角線。
我讀這個MSDN文章,發現它非常有用:
http://blogs.msdn.com/b/oldnewthing/archive/2007/09/24/5083738.aspx
但我仍然停留在我需要使用的邏輯:
- 計算一下尺寸圖像我需要任何變化的顯示器
- 創建應用顯示器偏移的壁紙
我的程序佈局如下:
ScreenInfo類:
public Bitmap ChosenWallPaper { get; private set; }
public Rectangle ScreenArea { get; private set; }
int ScreenNumber { get; set; }
public string ScreenDescription { get { return "Screen: " + ScreenNumber + " " + ScreenArea.ToString(); } }
public ScreenInfo(int screenNumber)
{
this.ScreenNumber = screenNumber;
ScreenArea = new Rectangle(Screen.AllScreens[screenNumber].Bounds.X, Screen.AllScreens[screenNumber].Bounds.Y, Screen.AllScreens[screenNumber].Bounds.Width, Screen.AllScreens[screenNumber].Bounds.Height);
}
ScreenCollection類
public List<ScreenInfo> ScreenList { get; private set; }
public ScreenCollection()
{
ScreenList = new List<ScreenInfo>();
for (int i = 0; i < Screen.AllScreens.Count(); i++)
{
ScreenList.Add(new ScreenInfo(i));
}
}
public Rectangle CalculateMainBitmapSize()
{
}
的我的源代碼,其餘尚未落實。
謝謝!
編輯:
我已經找到了如何來表示兩個顯示器互相有一些很哈克,可怕的代碼,但我開始瞭解顯示器的佈局方式多一點...
private void SizeScreens()
{
pictureBox1.Height = Desktops.ScreenList[0].ScreenArea.Height/10;
pictureBox1.Width = Desktops.ScreenList[0].ScreenArea.Width/10;
pictureBox2.Height = Desktops.ScreenList[1].ScreenArea.Height/10;
pictureBox2.Width = Desktops.ScreenList[1].ScreenArea.Width/10;
}
private void PositionScreens()
{
Point Screen1Location = new Point(Desktops.ScreenList[0].ScreenArea.X,Desktops.ScreenList[0].ScreenArea.Y);
Point Screen2Location = new Point(Origin.X + (Desktops.ScreenList[1].ScreenArea.X/10),Origin.Y + (Desktops.ScreenList[1].ScreenArea.Y/10));
pictureBox1.Location = Origin;
pictureBox2.Location = Screen2Location;
}
謝謝,虛擬屏幕如何處理主監視器上方的輔助監視器?這是我不明白的:( – JuniorDeveloper1208 2011-01-06 18:09:16