Как вычесть прямоугольник из другого? - PullRequest
4 голосов
/ 22 сентября 2010

Я пытаюсь определить рабочую область рабочего стола, даже когда панель задач скрыта.

У меня есть два прямоугольника, границы экрана и границы панели задач. Мне нужно вычесть границы панели задач Rectangle из экрана Rectangle, чтобы определить доступную рабочую область рабочего стола. По сути, я хочу создать Screen.WorkingArea, за исключением случаев, когда панель задач скрыта.

Произнесите прямоугольник экрана X,Y,W,H = 0,0,1680,1050 и панель задач X,Y,W,H is 0,1010,1680,40. Мне нужно вычесть второе из первого, чтобы определить, что рабочая область равна 0,0,1680,1010.

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

Ответы [ 11 ]

0 голосов
/ 22 сентября 2010

Полагаю, я не совсем понимаю, что вы пытаетесь получить. .NET сообщает текущую рабочую область рабочего стола как разрешение монитора минус пространство, занимаемое панелью задач.

  • Если панель задач не скрыта, рабочая область рабочего стола - это полное разрешение монитора минус размер панели задач.
  • Если панель задач скрыта, рабочей областью рабочего стола является полное разрешение монитора.
  • Если панель задач закреплена сверху или слева, рабочая область рабочего стола - это полное разрешение монитора за вычетом размера панели задач, а затем смещение в направлении X / Y в зависимости от ситуации.

Определение рабочей области экрана уже доступно в .NET (включая смещение координат X / Y, когда панель задач пристыкована вверх или влево.

     // set the coordinate to the upper-left of the screen
     Rectangle r = Screen.GetWorkingArea(new Point(0, 0));

     // the resulting rectangle will show the deviation in X/Y
     // and also the dimensions of the desktop (minus the Taskbar)
     MessageBox.Show
     (
        r.ToString()
     );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...